在javascript中我试过这个
new Date(Date.parse("2016-12-15"));
它输出一个日期对象,但日期为Wed Dec 14 19:00:00 EST 2016
。为什么当我期望它作为12月15日时它会降低14?
由于
答案 0 :(得分:0)
您可以使用.Date.UTC()
方法从特定的UTC时间创建日期对象,但是您必须单独传递值:
new Date(Date.UTC(year, month, day, hour, minute, second));
更好,更安全的方法是使用moment.js
答案 1 :(得分:0)
JavaScript dates不包含时区。您解析的日期将被解释为2016年12月15日午夜UTC。
当您将其转换回字符串时,它会使用您浏览器区域设置中的时区,并且由于您似乎位于美国东海岸,因此适当的时区是EST。
答案 2 :(得分:0)
Parse不是解析日期的可靠方法......
假定时区的差异
给定日期字符串" 2014年3月7日",parse()假定当地时间 区域,但给定ISO格式,如" 2014-03-07"它会假设一个 UTC时区(ES5和ECMAScript 2015)。因此Date对象 使用这些字符串生成可能代表不同的时刻 取决于支持的ECMAScript的版本,除非系统是 使用UTC的本地时区进行设置。这意味着两个日期字符串 看似等效的可能会导致两个不同的值取决于 正在转换的字符串的格式。
- Source -
我认为您应该使用其时区获取客户日期并使用Moment.js之类的库来正确解析日期。