首页 > 解决方案 > 使用时刻将用户定义时间转换为 UTC

问题描述

我们有应用程序,我们要求用户定义他们想要发布某些内容的时间。在我们的应用程序中,用户将选择内容应在目标日期前 X(0-5) 天和 y 时间 (0-23) 之前发布。

因此,如果用户创建发布日期为“09/21/2021”且发布时间为 3 的内容,则意味着该内容需要在 2021 年 9 月 21 日凌晨 3 点发布。

在我们的 Mongo DB 中,我们需要将计算的日期存储为“2021-09-21T07:00:00”,以便我们的 Cron Job 可以将其拉取。

我们尝试将跟随但没有任何成功

          var promotedDate = "2021-08-19 04:00:00"
          var fmt = "YYYY-MM-DD hh:mm:ss";
          var m = moment.utc(promotedDate, fmt);
          console.log('promoted date ', tempDate)
          console.log(m.local().format(fmt));
          console.log(m.utc().format(fmt));          

但它给了 2021-08-19 12:00:00

有什么帮助吗?

标签: node.jsmomentjs

解决方案


您可以使用moment.toISOString(). 无论所讨论的时区如何,这都会为您提供UTC moment:.2013-02-04T22:44:30.652Z

由于它带有毫秒和Z祖鲁时间,我们需要去掉最后 5 个字符string.slice()

const promotedDate = "2021-08-19 04:00:00";
const m            = moment.utc(promotedDate, "YYYY-MM-DD hh:mm:ss");
const iso8601      = m.toISOString()
                      .slice(0,-5); // removes milliseconds and `Z` for Zulu

console.log( `promoted: ${promotedDate}` );
console.log( `iso8601:  ${iso8601} );

推荐阅读