首页 > 解决方案 > 用时刻 JS 格式化日期以匹配

问题描述

我正在使用第三方 API 和Moment JS进行 Javascript 中的某些日期格式。

第三方 APIepoch以毫秒为单位对一些数据/结果进行分组,例如:

1559260800000

这相当于
GMT:2019 年 5 月 31 日星期五 00:00:00
您的时区:2019 年 5 月 31 日星期五 01:00:00 GMT+01:00 DST
相对时间:15 天内

我们使用Flatpickr日历进行日期选择。选择日期后,它将以本地日期格式返回所选日期,例如:

Fri May 31 2019 00:00:00 GMT+0100 (British Summer Time)

如果我使用 moment 进行转换,我会得到以下信息:

var epoch = moment.utc(dayElem.dateObj).valueOf();
1559257200000

这相当于:
GMT:2019 年 5 月 30 日星期四 23:00:00
您的时区:2019 年 5 月 31 日星期五 00:00:00 GMT+01:00 DST
相对时间:15 天内

我知道这个问题与当地时区有关,第一个是 GMT 00:00:00,第二个是 GMT 00:01:00,但我不确定如何解决它。

此外,一年中的晚些时候,例如 12 月,当我们在 BST 之外时,日期是格林威治标准时间,所以我也需要这个工作。

标签: javascriptdatetimemomentjsdate-formattingflatpickr

解决方案


由于您的日期选择器Date根据当地时间生成对象,但您实际上希望它们以 UTC 格式生成,那么您可以执行以下操作:

var timestamp = moment(dayElem.dateObj).utc(true).valueOf();

传递true给该utc函数将告诉它保留日期和时间值并移动偏移量,并在选择不同的时间点进行权衡。就您而言,这似乎是您所需要的。

另外,请不要称它为 Epoch Time。:)


推荐阅读