如何在我的情况下设置日期格式

时间:2015-03-26 19:04:33

标签: javascript date

我正在尝试将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。有没有正确的方法来解决这个问题?

非常感谢!

3 个答案:

答案 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', '-'));