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