Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在不改变时间的情况下解析数据库中的日期字符串?_Javascript_Node.js_Date_Momentjs - Fatal编程技术网

Javascript 如何在不改变时间的情况下解析数据库中的日期字符串?

Javascript 如何在不改变时间的情况下解析数据库中的日期字符串?,javascript,node.js,date,momentjs,Javascript,Node.js,Date,Momentjs,我正在从数据库中获取2016-07-13T00:00:00.000Z字符串,并使用moment.js将其转换为MM/DD/YYYY格式,如下所示: result = moment('2016-07-13T00:00:00.000Z').format('MM/DD/YYYY'); 打印日期为2016年7月12日,但我预计是2016年7月13日。 本地Linux时区是美国/纽约date命令打印此2016年7月4日星期一04:28:19美国东部夏令时您应该使用momentjs时区: 这将为您提供正确

我正在从数据库中获取
2016-07-13T00:00:00.000Z
字符串,并使用moment.js将其转换为MM/DD/YYYY格式,如下所示:

result = moment('2016-07-13T00:00:00.000Z').format('MM/DD/YYYY');
打印日期为2016年7月12日,但我预计是2016年7月13日。
本地Linux时区是美国/纽约
date
命令打印此
2016年7月4日星期一04:28:19美国东部夏令时

您应该使用momentjs时区:


这将为您提供正确的输出日期。

您应该使用momentjs时区:


这将为您提供正确的输出日期。

您拥有的日期以UTC为单位,如末尾的
z
所示

使用默认力矩构造函数时,
moment()
,它会将指定偏移量(在本例中为UTC)传递的时间转换为机器的本地时间。这就是为什么你的约会在改变。因为这是一个UTC日期,所以为了保持它完全相同,您可以使用
moment.UTC()

或者,parseZone也可以工作:

moment.parseZone('2016-07-13T00:00:00.000Z').format('MM/DD/YYYY');
"07/13/2016"
有关矩中所有构造函数的更多信息,请参阅
或者

您拥有的日期是UTC,如末尾的
z
所示

使用默认力矩构造函数时,
moment()
,它会将指定偏移量(在本例中为UTC)传递的时间转换为机器的本地时间。这就是为什么你的约会在改变。因为这是一个UTC日期,所以为了保持它完全相同,您可以使用
moment.UTC()

或者,parseZone也可以工作:

moment.parseZone('2016-07-13T00:00:00.000Z').format('MM/DD/YYYY');
"07/13/2016"
有关矩中所有构造函数的更多信息,请参阅
或者

您是否在momentjs中正确设置了时区?不,我没有。我发现这需要安装一个单独的软件包。您希望得到什么?如果希望该日期完全相同,请使用矩.utc()对其进行解析。请看:你能回答这个问题吗?我会选择它作为解决方案。您是否在momentjs中正确设置了时区?不,我没有。我发现这需要安装一个单独的软件包。您希望得到什么?如果希望该日期完全相同,请使用矩.utc()对其进行解析。请看:你能回答这个问题吗?我会选择它作为解决方案。
矩.tz('2016-07-13T00:00:00.000Z','America/New_York')。格式('MM/DD/YYYY')仍然打印
'07/12/2016'
矩.tz('2016-07-13T00:00:00.000Z','America/New_York')。格式('MM/DD/YYYY')仍然打印
'07/12/2016'
moment.parseZone('2016-07-13T00:00:00.000Z').format('MM/DD/YYYY');
"07/13/2016"