我对Javascript的日期有问题。
我收到一个包含日期的JSON,当我试图获取date对象时,它返回不同时区中的值,通常将日期移到20小时前的一天。
示例:
在json中的值是:"2014-06-01T00:00:00"
当我这么做
var d2 = new Date(Date.parse("2014-06-01T00:00:00"))它回来了
2014年5月31日星期六20:00格林尼治时间-0400(东部夏令时间)
当我期待
孙俊01 2014 00:00格林尼治时间-0400
我怎样才能解决这个问题?
谢谢
发布于 2014-07-01 16:46:30
Date.parse返回自UTC中的时代以来的毫秒数,因此不管您传入的日期/时间字符串是什么,您都会得到UTC。(有关更多信息,请参见Objects/Date/parse。)
如果您想将其转换为本地时间,则必须知道您的偏移量是否来自UTC。你可以从JavaScript那里得到这样的信息:
var offset = new Date().getTimezoneOffset()*60*1000;(Date.prototype.getTimezoneOffset以分钟为单位返回偏移量,因此我们必须转换为毫秒。)
然后,您可以使用该偏移量构造您的日期:
var date = new Date(Date.parse("2014-06-01T00:00:00") + offset);如果要将该日期解释为处于不同的时区,则只需使用适用于该时区的毫秒偏移量。不过,记住日光节约:这肯定会使事情复杂化。
发布于 2014-07-01 16:42:36
来自Date.parse的Mozilla文档
ECMAScript 5 ISO-8601格式支持 或者,日期/时间字符串可以是ISO 8601格式。例如,可以传递和解析"2011-10-10“(刚好日期)或"2011-10-10T14:48:00”(日期和时间)。UTC时区用于解释不包含时区信息的ISO 8601格式的参数。
您的值不包括时区信息,因此假定它位于UTC。午夜协调世界时,这一天的问题是晚上8点在您的当地时区。请注意,Date对象本身没有时区的概念--它只是自Unix时代以来的几毫秒时间。使用toString将其转换为字符串时,该字符串将使用浏览器的本地时区。您可以使用toUTCString来使用UTC转换为文本表示(因此,在本例中,您将以从UTC开始的午夜时结束)。
就你能做些什么来“解决”这个问题..。首先,你需要理解你想要表达的价值,以及你想用它做什么。如果没有更多的信息我们是帮不了你的。
https://stackoverflow.com/questions/24515347
复制相似问题