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"