使用moment.utc()日期不正确转换成“天”格式矩的Javascript UTC格式

问题描述 投票:0回答:1

我使用的时刻库日期转换为UTC格式。这里是我的日期字符串:

var dateString = "2019-01-31T11:33:16.952+0000";

new Date("2019-01-31T11:33:16.952+0000") // o/p: Thu Jan 31 2019 03:33:16 GMT-0800 (Pacific Standard Time)因为这个日期是小于日期自今天起一个星期,我试图显示文本说:“n天前”,而不是实际日期。但由于某种原因,我得到“4天前”显示为当我这样做将来的日期:

moment.utc("2019-01-31T11:33:16.952+0000").local().fromNow() // shouldnt this display "5 days ago"??

不知道为什么,那一刻没有正确转换之日起,任何想法可能是错在这里?

javascript momentjs
1个回答
0
投票

我猜想(考虑利用当地的(),所以时间中扣除,因为你可能在-ve时区转换到本地时区)this answer是你期望的解决方案:

理想情况下,你想从你的服务器向客户传递一个UTC时间戳。这并不意味着你必须到UTC切换你的整个服务器,它只是意味着你会从时间转换在数据库中的UTC在服务器上通过网络发送之前。当然,它甚至会更好,如果你实际存储次UTC,但你说你是不是在一个位置,让那种变化的现在。但是,我们只是工作过,你不能在服务器上的改变任何东西的前提。

我们还假设您的服务器被固定在UTC-07:00偏移。在现实生活中,这只能是像亚利桑那州的地方不按夏令时如此。所以,如果你是在洛杉矶,在太平洋时间,那么你的一些数据是基于UTC-07:00,但有一些是基于UTC-08:00。这需要,如果你想这样做在JavaScript要做更多的工作。

让我们还假设输入已经在ISO8601格式的字符串。 (如果不是的话,那么让我知道,我会调整此代码。)

变种S =“2013年9月11日18点00分00秒”; //从action.timeStamp

VAR actionTime =时刻(S + “-07:00”, “YYYY-MM-DD HH:MM:SSZ”);

VAR = TIMEAGO actionTime.fromNow();你的其他代码不起作用的原因是因为在第一线,你是通过浏览器的时区的影响。在第二行中的区域制定者只是改变了格式化,不及时改变实际时刻的区域。

此外,当您转储时刻到控制台进行调试,确保你格式化输出。否则你只是在其内部的属性值,这可能会或可能不会直接意义。

© www.soinside.com 2019 - 2024. All rights reserved.