如何使用 NodeJS 将 UTC 日期格式化为 'YYYY-MM-DD hh:mm:ss' 字符串?

2022-08-29 23:50:54

使用NodeJS,我想将a格式化为以下字符串格式:Date

var ts_hms = new Date(UTC);
ts_hms.format("%Y-%m-%d %H:%M:%S");

我该怎么做?


答案 1

如果您使用的是 Node.js,那么您肯定有 EcmaScript 5,因此 Date 有一个方法。您要求对 ISO8601 稍作修改:toISOString

new Date().toISOString()
> '2012-11-04T14:51:06.157Z'

因此,只需剪掉一些东西,您就设置好了:

new Date().toISOString().
  replace(/T/, ' ').      // replace T with a space
  replace(/\..+/, '')     // delete the dot and everything after
> '2012-11-04 14:55:45'

或者,在一行中:new Date().toISOString().replace(/T/, ' ').replace(/\..+/, '')

ISO8601必然是UTC(在第一个结果上也由尾随的Z表示),因此默认情况下您将获得UTC(总是一件好事)。


答案 2

2021-10-06更新:添加日期.js并通过@ashleedawg
更新2021-04-07删除虚假编辑:@Tampa添加的Luxon。
2021-02-28更新:现在应该注意的是,Moment.js不再被积极开发。它不会匆匆忙忙地消失,因为它嵌入了许多其他事物中。该网站有一些关于替代方案的建议,并解释了原因。
2017-03-29更新:添加了date-fns,关于Moment和Datejs
UPDATE 2016-09-14的一些注释:添加了SugarJS,它似乎具有一些出色的日期/时间功能。


好吧,既然没有人真正提供实际的答案,这是我的。

库无疑是以标准方式处理日期和时间的最佳选择。日期/时间计算中有很多边缘情况,因此能够将开发移交给库是很有用的。

以下是主 Node 兼容时间格式化库的列表:

  • Day.js [2021-10-06] “Moment的快速2kB替代方案.js具有相同的现代API”
  • Luxon [添加 2017-03-29,感谢 Tampa] “一个强大、现代、友好的 JavaScript 日期和时间包装器。
  • Moment.js [感谢 Mustafa] “一个轻量级 (4.3k) javascript 日期库,用于解析、操作和格式化日期” - 包括国际化、计算和相对日期格式 - Update 2017-03-29:不再那么轻量级,但仍然是最全面的解决方案,特别是如果您需要时区支持。- 2021-02-28更新:不再处于积极开发状态。
  • date-fns [添加 2017-03-29, 感谢 Fractalf] 小而快,可与标准 JS 日期对象配合使用。如果您不需要时区支持,那么Moment的绝佳替代品。
  • SugarJS - 一个通用的帮助器库,为JavaScript内置对象类型添加了急需的功能。包括一些出色的日期/时间功能。
  • strftime - 正如它所说,漂亮而简单
  • dateutil - 这是我在MomentJS之前经常使用的那个
  • 节点格式日期
  • TimeTraveller - “Time Traveller提供了一套实用程序方法来处理日期。从加法和减法,到格式设置。Time Traveller只扩展了它创建的日期对象,而不会污染全局命名空间。
  • Tempus [感谢 Dan D] - 更新:这也可以与 Node 一起使用,并与 npm 一起部署,请参阅文档

还有非 Node 库:

  • Datejs [感谢 Peter Olson] - 没有打包在 npm 或 GitHub 中,所以不太容易与 Node 一起使用 - 不是真的推荐,因为自 2007 年以来没有更新!