JavaScript Date()在时区之间出现故障?

JavaScript Date()在时区之间出现故障?,javascript,date,Javascript,Date,我有一个网站,其中使用JSON.stringify()向服务器发送日期和从服务器发送日期。如果客户端写入注释,则会将其发送到服务器,并带有日期字符串,如下所示 "2013-09-21T04:00:00.000Z" 当服务器获取该字符串时,我将根据该字符串创建一个新的日期 var server_date = new Date("2013-09-21T04:00:00.000Z"); 此日期变量存储在MongoDB中。但是当客户端重新加载页面时,客户端收到的日期字符串如下所示 "2013-09-

我有一个网站,其中使用JSON.stringify()向服务器发送日期和从服务器发送日期。如果客户端写入注释,则会将其发送到服务器,并带有日期字符串,如下所示

"2013-09-21T04:00:00.000Z"
当服务器获取该字符串时,我将根据该字符串创建一个新的日期

var server_date = new Date("2013-09-21T04:00:00.000Z");
此日期变量存储在MongoDB中。但是当客户端重新加载页面时,客户端收到的日期字符串如下所示

"2013-09-21T00:00:00.000Z"
当我从客户机上的这个字符串创建一个新日期时

var client_date = new Date("2013-09-21T00:00:00.000Z");

日期对象不正确。不知何故,当我将客户的日期设置为2013年9月20日,而不是2013年9月21日。在本地机器上运行服务器时,这从来都不是问题。目前服务器是在AWS上运行的,所以我假设这会在某种程度上影响日期?但是我不明白client_date变量是如何在字符串中指定的日期前一天设置的,而不管小时分秒。如何格式化日期以解决此问题?谢谢

Z
表示协调世界时(UTC)或格林威治标准时间(GMT)。因此,当格林威治的
2013-09-21T00:00:00.000Z
仍然是9月20日,一直到你的客户所在地。

谢谢!为了纠正这个问题,我只是剥离了日期的时间部分,并创建了一个包含日期、月份和年份的新日期。有什么方法可以避免这个问题吗?为什么您的日期字符串看起来像
2013-09-21T00:00:00.000Z
?您是否正在使用
新日期().toJSON()
?无论如何,如果客户在不同的时区,那可能就是客户的时间。如果您想要一个一致的时间,并且您正在使用PHP,那么使用带有正确时区的
date\u default\u timezone\u set('America/Los\u Angeles')
,并执行类似于
$dt=date('D M Y h:i:s').“GMT-0700(太平洋标准时间)”的操作
使其看起来像JavaScript输出。当然,使用正确的时区。