我正在尝试将http请求数据转换为我需要的正确日期格式。
我公司的http请求数据返回
等数据2015-03-11, 2015-05-13, 2015-11-21...etc.
我的代码。
var day1 = '2015-03-11'; //return from http request
var day2 = '2015-05-13'; //return from http request
var date = new Date(day1) ->
//time will be off 1 day for some reason
//because javascript can't recognize 03 and it is a string.`
我需要能够将2015-03-11
转换为March, 11, 2015
。有没有正确的方法来解决这个问题?
非常感谢!
答案 0 :(得分:5)
问题源于JavaScript Date实例包含一个时间部分的事实,以及与您的ISO日期相似的相关事实被解释为UTC。如果您位于西欧以西,那么您的计算机所处的时区将使2015年3月11日午夜时间段为2015年3月10日的时区。
有几种方法可以解决这个问题;这是一个:
var utcdate = new Date("2015-03-11");
var local = new Date(utcdate.getUTCFullYear(), utcdate.getUTCMonth(), utcdate.getUTCDate());
这将使“本地”日期与指示的原始日期字符串相同。
如链接重复问题的答案中所述,您还可以在实例化日期之前操纵日期字符串。 最好的目的是确保您的服务器生成格式良好的日期。
答案 1 :(得分:1)
修改为使用斜杠替换短划线以进行ISO格式化:
var day1 = '2015-03-31'; //return from http request
var day2 = '2015-05-13'; //return from http request
function getDateFormat(day)
{
var date = new Date(day.replace(/-/g, '/'));
var monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"
];
var dateString = monthNames[date.getMonth()] + " " + date.getDate() + ", " + date.getFullYear();
alert(dateString);//just to test
}
getDateFormat(day1);
getDateFormat(day2);
如果你想要的只是显示月,日和年的名字,那么这就行了。
更新后将其放入函数中。
答案 2 :(得分:0)
如何删除额外的" 0"?
var date = new Date(day1.replace('-0', '-'));