请参阅此处的问题示例:http://www.jsfiddle.net/s2uYE/
注意第二个新Date()在第一个新Date()后面1小时,即使它们是同时启动的。
这导致我在最近的一个项目中如此混乱,我想知道为什么会发生这种情况,如果这是浏览器如何通过JSON进行字符串化处理日期或者是否“应该”发生的错误还没有意识到这个好处。
任何帮助表示赞赏!
亲切的问候, 标记
答案 0 :(得分:2)
我会打赌这是预期的行为。考虑到万维网真的是“全世界”,并且您可能在表单上输入时间或日期。如果从Javascript生成此值,则大多数时候您不希望本地时间相对于用户的浏览器。当我去你的小提琴时,我在JSON时间后<4小时 。
在服务器端,您可能希望以最中性的方式区分此时间输入。 GMT是一个非常方便的标准。请记住,它可能是世界某个地方的午夜,但它只会是GMT午夜一次。
答案 1 :(得分:1)
alert(new Date().toUTCString() + '\n' + JSON.stringify({ 'date': new Date() }));
答案 2 :(得分:0)
很抱歉,我仍然对Date()值的变化以及位置有点感到困惑。
如果我调用'new Date()',浏览器软件会从我的电脑中抽出时间,对吗?
如果我要从JSON.Stringify()方法中调用'new Date()',那么会发生什么?新的Date()在哪里获得它的价值,我认为它仍然来自我的机器,那么它应该与第一个'new Date()'的值相同?
如果情况并非如此,并且在JSON.Stringify中调用'new Date()'以某种方式拉出了不同的时区,那么肯定可以通过将'new Date()'值存储在变量中来解决它将此变量放在传递给JSON.Stringify?
的对象文字中e.g。 (对不起,我只允许发布1个链接,所以必须在这里放置我的jsFiddle代码)
var storeDate = new Date();
alert(storeDate +'\ n'+ JSON.stringify({'date':storeDate}));
但这不起作用,所以似乎JSON.Stringify以某种方式改变了变量?
很抱歉,如果我误解了人们的建议。但听起来你说这一切都取决于时区 - 这很好 - 但我只是不明白为什么执行'new Date()'并将值存储在变量中然后可以将它的设置值更改为不同的值什么时候通过JSON.Stringify?
更新:所以即使我在变量中存储新的Date(),它也不是存储在变量中的设定值。 http://www.jsfiddle.net/s2uYE/3/表明如果我手动输入日期时间,那么JSON.Stringify什么都不做。