Javascript dates are a day off?
本问题已经有最佳答案,请猛点这里访问。
我试图在应用程序中使用一个简单的日期函数来传递一个格式为
然而,当我尝试这个的时候,我提供了正确的日期,但是它输出的时间比我想要的要短一天。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function format(inputDate) { var date = new Date(inputDate); if (!isNaN(date.getTime())) { var day = date.getDate().toString(); var month = (date.getMonth() + 1).toString(); // Months use 0 index. return (month[1] ? month : '0' + month[0]) + '/' + (day[1] ? day : '0' + day[0]) + '/' + date.getFullYear(); } } console.log(format('2017-07-30')); |
这是一把小提琴:http://jsfiddle.net/49pptrj4/
有没有想过为什么这是错误的返回?
最终结果:
。
从这里开始
Given a date string of"March 7, 2014", [Date.]parse() assumes a local time zone, but given an ISO format such as"2014-03-07" it will assume a time zone of UTC.
号
您的日期字符串假定为0:00或午夜,日期以英国格林威治时区UTC指定。但是,您的浏览器会占用这段时间,并将其转换为您的本地时区,如果您在美洲,则比UTC晚几个小时,这会使结果落后一天。
以下代码适用于在本地时区中创建具有正确日期的日期。
1 2 | utcDate = new Date("2017-07-30"); //Date object a day behind new Date(utcDate.getTime() + utcDate.getTimezoneOffset() * 60000) //local Date |
在这里,通过根据时区差异添加时间来创建本地日期。
这在UTC之前的地区可能不起作用;可能会提前一天。编辑:刚检查过,并且在UTC之前的区域中