node.js - 使用时刻将用户定义时间转换为 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
有什么帮助吗?
解决方案
您可以使用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} );
推荐阅读
- batch-file - 通过文件名首字母将文件移动到新创建的文件夹的批处理脚本
- elasticsearch - Vertx - 关闭连接 - JDBC 和其他
- javascript - 引导模式未打开 - 通过脚本加载
- java - Spring Boot:我如何知道应用程序是否在 @PreDestroy 方法中被中断
- bash - 在 WSL 上使用 BASH 监听来自 DLNA 渲染器的 UDP 响应
- android - 从广播广播接收器取消意图服务
- rest - 向 API 发送 >100 meg 文件
- sapui5 - 使用增长属性显示来自 xml 的列表项
- python - 了解局部变量和全局变量并制作函数
- javascript - 尝试创建收藏帖子然后在页面上评论然后提交它的 Greasemonkey 脚本