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

Javascript 如何使用NodeJS将UTC日期格式化为`YYYY-MM-DD hh:MM:ss`字符串?,javascript,node.js,date,Javascript,Node.js,Date,使用NodeJS,我想将日期格式化为以下字符串格式: var ts_hms = new Date(UTC); ts_hms.format("%Y-%m-%d %H:%M:%S"); 我该怎么做呢?我一般不反对图书馆。在这种情况下,除非应用程序流程的其他部分的日期很长,否则通用库似乎有些过头了 编写这样的小实用程序函数对于初学者和有成就的程序员来说都是一个有用的练习,对于我们当中的新手来说也是一种学习经验 function dateFormat (date, fstr, utc) { utc

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

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

我该怎么做呢?

我一般不反对图书馆。在这种情况下,除非应用程序流程的其他部分的日期很长,否则通用库似乎有些过头了

编写这样的小实用程序函数对于初学者和有成就的程序员来说都是一个有用的练习,对于我们当中的新手来说也是一种学习经验

function dateFormat (date, fstr, utc) {
  utc = utc ? 'getUTC' : 'get';
  return fstr.replace (/%[YmdHMS]/g, function (m) {
    switch (m) {
    case '%Y': return date[utc + 'FullYear'] (); // no leading zeros required
    case '%m': m = 1 + date[utc + 'Month'] (); break;
    case '%d': m = date[utc + 'Date'] (); break;
    case '%H': m = date[utc + 'Hours'] (); break;
    case '%M': m = date[utc + 'Minutes'] (); break;
    case '%S': m = date[utc + 'Seconds'] (); break;
    default: return m.slice (1); // unknown code, remove %
    }
    // add leading zero if required
    return ('0' + m).slice (-2);
  });
}

/* dateFormat (new Date (), "%Y-%m-%d %H:%M:%S", true) returns 
   "2012-05-18 05:37:21"  */

更新2021-02-28:现在应该注意的是,Moment.js不再被积极开发。它不会很快消失,因为它嵌入了很多其他东西。该网站提供了一些备选方案的建议,并解释了原因。
更新2017-03-29:添加日期fns,关于时间和日期的一些注释
更新2016-09-14:添加了SugarJS,它似乎具有一些出色的日期/时间功能


好的,因为没有人真正提供了一个实际的答案,这里是我的

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

以下是与主节点兼容的时间格式库的列表:

  • “一个功能强大、现代且友好的JavaScript日期和时间包装器”-MomentJS使用不可变类型、链接等从头开始重建
  • [感谢Mustafa]“一个用于解析、操作和格式化日期的轻量级(4.3k)javascript日期库”-包括国际化、计算和相关日期格式-更新2017-03-29:不再那么轻量级,但仍然是最全面的解决方案,尤其是当您需要时区支持时
  • [新增2017-03-29,感谢Fractalf]小巧、快速,适用于标准JS日期对象。若你们不需要时区支持,那个么这是一个很好的选择
  • -一个通用帮助程序库,为JavaScripts内置的对象类型添加了急需的功能。包括一些出色的日期/时间功能
  • -就像上面说的,很好很简单
  • -这是我在MomentJS之前用过的
  • -“Time Traveler提供了一组处理日期的实用方法。从加减到格式化。Time Traveler只扩展它创建的日期对象,而不污染全局命名空间。”
  • [感谢Dan D]-更新:这也可以与Node一起使用,并与npm一起部署,请参阅文档
还有一些非节点库:

  • [感谢Peter Olson]-未打包在npm或GitHub中,因此不太容易与Node一起使用-不推荐使用,因为自2007年以来未更新过
如果您使用的是Node.js,那么您肯定有EcmaScript 5,因此Date有一个
toISOString
方法。您要求对ISO8601稍作修改:

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'
或者,在一行中:
newdate().toISOString().replace(/T/,'').replace(/\..+/,'')


ISO8601必须是UTC(也由第一个结果的尾随Z指示),因此默认情况下可以获得UTC(总是一件好事)。

使用Date对象中提供的方法,如下所示:

var ts_hms = new Date();

console.log(
    ts_hms.getFullYear() + '-' + 
    ("0" + (ts_hms.getMonth() + 1)).slice(-2) + '-' + 
    ("0" + (ts_hms.getDate())).slice(-2) + ' ' +
    ("0" + ts_hms.getHours()).slice(-2) + ':' +
    ("0" + ts_hms.getMinutes()).slice(-2) + ':' +
    ("0" + ts_hms.getSeconds()).slice(-2));

它看起来非常脏,但是它应该可以与JavaScript核心方法配合使用

JavaScript库sugar.js()具有格式化日期的函数

例如:

Date.create().format('{dd}/{MM}/{yyyy} {hh}:{mm}:{ss}.{fff}')

有一个用于转换的库:

npm install dateformat
然后写下你的要求:

var dateFormat = require('dateformat');
然后绑定值:

var day=dateFormat(new Date(), "yyyy-mm-dd h:MM:ss");

请参见

我需要一个简单的格式库,不需要语言环境和语言支持。所以我修改了

并使用它。看


文档非常清晰。

无需使用任何库,即可轻松阅读和定制所需格式的时间戳:

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())
}
函数时间戳(){

功能板(n){返回n使用
x-date
模块,该模块是

使用.toString(),这将变成格式

替换(/T/,“”)。//将T替换为“”2017-01-15T

替换(/…+/,'')//用于…13:50:16.1271

示例,请参见var
日期
小时

var date=“2017-01-15T13:50:16.1271”。toString(“yyyyMMddHHmmss”)。
替换(/T/,“”)。
替换(/\..+/,'');
var auxCopia=拆分日期(“”);
日期=auxCopia[0];
var hour=auxCopia[1];
控制台日志(日期);

console.log(小时);
我想这实际上回答了你的问题。

在javascript中使用日期/时间非常烦人。 几根白发之后,我发现这其实很简单

var date = new Date();
var year = date.getUTCFullYear();
var month = date.getUTCMonth();
var day = date.getUTCDate();
var hours = date.getUTCHours();
var min = date.getUTCMinutes();
var sec = date.getUTCSeconds();

var ampm = hours >= 12 ? 'pm' : 'am';
hours = ((hours + 11) % 12 + 1);//for 12 hour format

var str = month + "/" + day + "/" + year + " " + hours + ":" + min + ":" + sec + " " + ampm;
var now_utc =  Date.UTC(str);

我在Nodejs和angularjs使用,非常好

安装

$ npm install dateformat
$ dateformat --help
演示

备选方案#6233

将UTC偏移量添加到本地时间,然后使用
Date
对象的
toLocaleDateString()
方法将其转换为所需格式:

// Using the current date/time
let now_local = new Date();
let now_utc = new Date();

// Adding the UTC offset to create the UTC date/time
now_utc.setMinutes(now_utc.getMinutes() + now_utc.getTimezoneOffset())

// Specify the format you want
let date_format = {};
date_format.year = 'numeric';
date_format.month = 'numeric';
date_format.day = '2-digit';
date_format.hour = 'numeric';
date_format.minute = 'numeric';
date_format.second = 'numeric';

// Printing the date/time in UTC then local format
console.log('Date in UTC: ', now_utc.toLocaleDateString('us-EN', date_format));
console.log('Date in LOC: ', now_local.toLocaleDateString('us-EN', date_format));
我正在创建默认为本地时间的日期对象。我正在向其添加UTC偏移。我正在创建日期格式对象。我正在以所需格式显示UTC日期/时间:


对于日期格式,最简单的方法是使用矩库


检查下面的代码和指向的链接

//var ts_hms=新日期(UTC);
//ts_hms.format(“%Y-%m-%d%H:%m:%S”)
//精确格式
log(new Date().toISOString().replace('T','')。子字符串(0,19))
//其他格式
console.log(新日期().toutString())
console.log(新日期().toLocaleString('en-US'))

console.log(new Date().toString())
这是我编写的一个轻量级库,可在node.js和浏览器中使用

安装

  • 使用NPM安装

  • 直接加载(用于浏览器)
<
var date = new Date();
var year = date.getUTCFullYear();
var month = date.getUTCMonth();
var day = date.getUTCDate();
var hours = date.getUTCHours();
var min = date.getUTCMinutes();
var sec = date.getUTCSeconds();

var ampm = hours >= 12 ? 'pm' : 'am';
hours = ((hours + 11) % 12 + 1);//for 12 hour format

var str = month + "/" + day + "/" + year + " " + hours + ":" + min + ":" + sec + " " + ampm;
var now_utc =  Date.UTC(str);
$ npm install dateformat
$ dateformat --help
var dateFormat = require('dateformat');
var now = new Date();

// Basic usage
dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT");
// Saturday, June 9th, 2007, 5:46:21 PM

// You can use one of several named masks
dateFormat(now, "isoDateTime");
// 2007-06-09T17:46:21

// ...Or add your own
dateFormat.masks.hammerTime = 'HH:MM! "Can\'t touch this!"';
dateFormat(now, "hammerTime");
// 17:46! Can't touch this!

// You can also provide the date as a string
dateFormat("Jun 9 2007", "fullDate");
// Saturday, June 9, 2007
...
appHelper.validateDates = function (start, end) {
    var returnval = false;

    var fd = new Date(start);
    var fdms = fd.getTime();
    var ed = new Date(end);
    var edms = ed.getTime();
    var cd = new Date();
    var cdms = cd.getTime();

    if (fdms >= edms) {
        returnval = false;
        console.log("step 1");
    }
    else if (cdms >= edms) {
        returnval = false;
        console.log("step 2");
    }
    else {
        returnval = true;
        console.log("step 3");
    }
    console.log("vall", returnval)
    return returnval;
}
// Using the current date/time
let now_local = new Date();
let now_utc = new Date();

// Adding the UTC offset to create the UTC date/time
now_utc.setMinutes(now_utc.getMinutes() + now_utc.getTimezoneOffset())

// Specify the format you want
let date_format = {};
date_format.year = 'numeric';
date_format.month = 'numeric';
date_format.day = '2-digit';
date_format.hour = 'numeric';
date_format.minute = 'numeric';
date_format.second = 'numeric';

// Printing the date/time in UTC then local format
console.log('Date in UTC: ', now_utc.toLocaleDateString('us-EN', date_format));
console.log('Date in LOC: ', now_local.toLocaleDateString('us-EN', date_format));
const moment = require('moment')
const current = moment().utc().format('Y-M-D H:M:S')
npm install @riversun/simple-date-format
<script src="https://cdn.jsdelivr.net/npm/@riversun/simple-date-format/lib/simple-date-format.js"></script>
import SimpleDateFormat from "@riversun/simple-date-format";
const SimpleDateFormat = require('@riversun/simple-date-format');
const date = new Date('2018/07/17 12:08:56');
const sdf = new SimpleDateFormat();
console.log(sdf.formatWith("yyyy-MM-dd'T'HH:mm:ssXXX", date));//to be "2018-07-17T12:08:56+09:00"
const date = new Date('2018/07/17 12:08:56');
const sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
console.log(sdf.format(date));//to be "2018-07-17T12:08:56+09:00"