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

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

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

我怎么做?

宝儿理查德2020/03/23 09:29:19

更新2017-03-29:添加了date-fns,有关Moment和Datejs的一些注意事项
更新2016-09-14:添加了SugarJS,它似乎具有一些出色的日期/时间功能。


好的,因为没有人提供实际答案,所以这是我的。

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

这是与Node兼容的主要时间格式库的列表:

  • Moment.js [ 感谢Mustafa ]“用于解析,处理和格式化日期的轻量级(4.3k)javascript日期库”-包括国际化,计算和相对日期格式- 更新2017-03-29:不太轻巧仍然是最全面的解决方案,尤其是在需要时区支持的情况下。
  • date-fns [ 由于Fractalf而于2017-03-29添加 ]小型,快速,适用于标准JS日期对象。如果您不需要时区支持,则可以替代Moment。
  • SugarJS-一个通用的帮助程序库,为JavaScript内置对象类型添加了许多急需的功能。包括一些出色的日期/时间功能。
  • strftime-准确地说,很简单
  • dateutil-这是我在MomentJS之前使用的工具
  • 节点格式日期
  • TimeTraveller- “ Time Traveler提供了一组实用的方法来处理日期。从加减到格式化。TimeTraveler仅扩展它创建的日期对象,而不会污染全局名称空间。”
  • Tempus [感谢Dan D]-更新:这也可以与Node一起使用并与npm一起部署,请参阅文档

也有非节点库:

  • Datejs [感谢Peter Olson]-未打包在npm或GitHub中,因此不太容易与Node一起使用-不太推荐使用,因为自2007年以来就未更新!
樱小胖Mandy2020/03/23 09:29:19

易于阅读和可定制的方式,以所需的格式获取时间戳,而无需使用任何库:

function timestamp(){
  function pad(n) {return n<10 ? "0"+n : n}
  d=new Date()
  dash="-"
  colon=":"
  return d.getFullYear()+dash+
  pad(d.getMonth()+1)+dash+
  pad(d.getDate())+" "+
  pad(d.getHours())+colon+
  pad(d.getMinutes())+colon+
  pad(d.getSeconds())
}

(如果您需要UTC格式的时间,则只需更改函数调用即可。例如,“ getMonth”变为“ getUTCMonth”)