如何解决12HR片刻精度损失的问题?

时间:2016-07-31 00:25:39

标签: javascript formatting momentjs toisostring

我已将ISO日期字符串转换为momentjs时刻,然后使用.format("MM/DD/YYYY HH:MM")格式化该时刻。

当我输出最后格式化的时刻时,分钟值与最初从iso字符串读回的值不一致。

在这种情况下,ISO字符串值保持在3:10 PM或“2016-08-03T03:10:00.000Z”,如字符串中所示。 But when I call format the moment value is 4:07PM meaning three minutes have been subtracted during the format.

在调试期间,我在每个分配阶段都注意到以下值:

第1步(将db值转换为ISO字符串):

var actualBCR_Local = moment.utc('@Model.Escalation.Actual_BCR_ISO').toISOString();

value: "2016-08-03T03:10:00.000Z"

第2步(将ISO字符串转换为momentjs时刻以表示当地时间GMT + 1):

 var actualBCR_Local_Moment = moment(actualBCR_Local);

 value: Wed Aug 03 2016 04:10:00 GMT+0100 (GMT Daylight Time)

第3步(以12HR格式格式化演示文稿,问题在这里,因为我原来的价值应该是04:10 ,我输了3分钟):

 var actualBCR_Local_Formatted = actualBCR_Local_Moment.format("MM/DD/YYYY HH:MM"); 

 value: "08/03/2016 04:08"

在以12HR格式格式化片刻时,如何防止精确度损失?

1 个答案:

答案 0 :(得分:2)

因为你使用了错误的格式

在此section中,您会发现您使用的是HH:MM,这意味着hour:month

如果您使用HH:mm,那么您将获得正确的时间。

这就是为什么你有2分钟的损失,因为它显示08为"月"

这是我测试的内容

example here