Как отформатировать дату UTC в виде строки` YYYY-MM-DD hh:mm:ss ' с помощью NodeJS?



используя NodeJS, я хочу отформатировать Date в следующий формат строки:



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


Как мне это сделать?

752   14  

14 ответов:

если вы используете узел.js, у вас обязательно будет EcmaScript 5, и поэтому дата имеет 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'

или в одну строку: new Date().toISOString().replace(/T/, ' ').replace(/\..+/, '')

ISO8601 обязательно UTC (также указывается трейлинг Z на первом результате), поэтому вы получаете UTC по умолчанию (всегда хорошо).

обновление 2017-03-29: добавлена дата-fns, некоторые заметки о моменте и датах
Обновление 2016-09-14: добавлен SugarJS, который, кажется, имеет некоторые отличные функции даты/времени.


хорошо, так как никто на самом деле не предоставил реальный ответ, вот мой.

библиотека, безусловно, лучший выбор для обработки даты и времени стандартным способом. Есть много крайних случаев в вычислениях даты/времени, поэтому полезно иметь возможность передать разработку в a библиотека.

вот список основных узлов совместимых библиотек форматирования времени:

  • момент.js [спасибо Мустафе] "легкая (4.3 k) javascript библиотека дат для разбора, манипулирования и форматирования дат" - включает в себя интернационализацию, вычисления и относительные форматы дат -обновление 2017-03-29: не совсем так легкий больше, но все же наиболее комплексное решение, особенно если вам нужно поддержка часового пояса.
  • дата-ФНС [добавлено 2017-03-29, благодаря Fractalf] маленький, быстрый, работает со стандартными объектами даты JS. Отличная альтернатива, если вам не нужна поддержка часовых поясов.
  • SugarJS - общая вспомогательная библиотека, добавляющая столь необходимые функции к встроенным типам объектов JavaScripts. Включает в себя некоторые отличные возможности просмотра даты/времени.
  • strftime - только то, что он говорит, красиво и просто
  • dateutil - это тот, который я использовал до MomentJS
  • node-formatdate
  • TimeTraveller - "Time Traveller предоставляет набор полезных методов для работы с датами. От добавления и вычитания, до форматирования. Time Traveller только расширяет объекты date, которые он создает, не загрязняя глобальное пространство имен."
  • Темпус [спасибо Dan D] - Обновление: это также может использоваться с узлом и развертываться с помощью npm, см. docs

есть также неузловые библиотеки:

  • Datejs [благодаря Питеру Олсону] - не упакован в npm или GitHub, поэтому не так прост в использовании с узлом-не рекомендуется, так как не обновляется с 2007 года!

есть библиотека для преобразования:

npm install dateformat

после этого напишите ваше требование:

var dateFormat = require('dateformat');

затем свяжите значение:

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

посмотреть dateformat

Я ничего не имею против библиотек в целом. В этом случае библиотека общего назначения кажется излишней, если другие части процесса подачи заявки не датируются сильно.

написание небольших полезных функций, таких как это, также является полезным упражнением как для начинающих, так и для опытных программистов и может быть учебным опытом для новичков среди нас.

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"  */

библиотека javascript сахар.js (http://sugarjs.com/) имеет функции для форматирования дат

пример:

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

легко читаемый и настраиваемый способ получить метку времени в нужном формате, без использования какой-либо библиотеки:

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")

вы можете использовать один из многих модулей, доступных для форматирования дат. @Julian-Knight дал довольно хороший список в своем ответе.

кроме того, еще один отличный способ достичь того, что вы ищете, - это использовать метод, указанный в объекте Date следующим образом:

var ts_hms = new Date(UTC);

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

это выглядит очень грязно, но он должен работать нормально с основными методами JavaScript :)

new Date(2015,1,3,15,30).toLocaleString()

//=> 2015-02-03 15:30:00

использовать x-date модуль, который является одним из суб-модули x-класс библиотека;

require('x-date') ; 
  //---
 new Date().format('yyyy-mm-dd HH:MM:ss')
  //'2016-07-17 18:12:37'
 new Date().format('ddd , yyyy-mm-dd HH:MM:ss')
  // 'Sun , 2016-07-17 18:12:51'
 new Date().format('dddd , yyyy-mm-dd HH:MM:ss')
 //'Sunday , 2016-07-17 18:12:58'
 new Date().format('dddd ddSS of mmm , yy')
  // 'Sunday 17thth +0300f Jul , 16'
 new Date().format('dddd ddS  mmm , yy')
 //'Sunday 17th  Jul , 16'
new Date().toString("yyyyMMddHHmmss").
      replace(/T/, ' ').  
      replace(/\..+/, '') 

С .toString (), это становится в формате

заменить(/T/,''). // заменить T на '' 2017-01-15T...

заменить(/..+/, ") //для ...13:50:16.1271

пример, см. var date и hour:

var date="2017-01-15T13:50:16.1271".toString("yyyyMMddHHmmss").
                    replace(/T/, ' ').      
                    replace(/\..+/, '');
    
                    var auxCopia=date.split(" ");
                    date=auxCopia[0];
                    var hour=auxCopia[1];

console.log(date);
console.log(hour);

Мне нужна была простая библиотека форматирования без колокольчиков и свистков языковой поддержки. Поэтому я изменил

http://www.mattkruse.com/javascript/date/date.js

и использовал его. См.https://github.com/adgang/atom-time/blob/master/lib/dateformat.js

документация довольно ясна.

Я думаю, что это отвечает на ваш вопрос.

Это так раздражает работа с датой/временем в 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);

вот скрипка

Я использую [https://github.com/felixge/node-dateformat] в Nodejs и angularjs, так хорошо

установить

$ 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;
}

Comments

    Ничего не найдено.