Как отформатировать дату UTC в виде строки `ГГГГ-ММ-ДД чч: мм: сс` с помощью NodeJS?

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

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

Как я могу это сделать?

 Dan D.18 мая 2012 г., 05:12
или жеTempus
 Julian Knight23 мая 2012 г., 11:28
Ни Datejs, ни Tempus не являются библиотеками Node (хотя их можно использовать с Node, вы не можете использовать установщик библиотеки npm). Поскольку никто не выдвинул их в качестве реальных ответов, я сделал это сам.
 Mustafa18 мая 2012 г., 04:33
или жеmomentjs
 Peter Olson18 мая 2012 г., 04:30
Это как бы надоело обходиться без каких-либо библиотек. Я рекомендую использоватьdatejs
 Tampa18 мая 2012 г., 06:25
Темпус работал отлично. Рекламные проблемы будут моментом.

Ответы на вопрос(14)

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

//=> 2015-02-03 15:30:00
 16 янв. 2017 г., 01:38
Добро пожаловать в StackOverflow. Пожалуйста, отредактируйте свой ответ, иначе вас могут опровергнуть. Как и сейчас, это просто предложение без контекста. Пожалуйста, смотрите здесь дляHow to Write a Good Answer.

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

 25 февр. 2015 г., 03:05
Я согласен, что вам нужно добавить 1 для getMonth (), поскольку январь возвращается как 0, но я не думаю, что вы хотите добавить 1 для getDate ().
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;
}

http://sugarjs.com/) имеет функции для форматирования дат

Пример:

Date.create().format('{dd}/{MM}/{yyyy} {hh}:{mm}:{ss}.{fff}')
 23 июн. 2014 г., 23:46
Похоже, действительно потрясающая библиотека. Их форматирование довольно приятное, и их документы показывают элегантные решения для сотен других вещей, которые я разочаровал в JavaScript. Собираюсь попробовать.

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

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

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"  */
 18 мая 2012 г., 13:43
Хотя это действительно может быть полезно для обучения, я бы не согласился с тем, что это лучший результат, чем использование небольшой, хорошо сконструированной библиотеки. Библиотека будет поддерживаться и с большей вероятностью будет охватывать крайние случаи в дизайне, которые могут быть не очевидны для вас на первый взгляд, но могут легко укусить в какой-то момент - вычисления даты / времени особенно подвержены этим проблемам из-за присущей им сложности.
 08 июн. 2014 г., 23:55
Нет. В этом случае обязательно используйте библиотеку. Формат может измениться. Даже если это не изменится, это усложнит код. Другим людям, обслуживающим ваш код, придется потратить время, пытаясь понять эту функцию и убедиться, что она правильная. Упражнения для школы; вопрос был о реальном использовании. Если, конечно, это не ваш первый или второй "настоящий" проект; тогда может быть хорошо сделать что-то подобное, чтобы вы могли понять, почему вы не должны делать это в будущем.
 23 окт. 2012 г., 13:05
Это очень хорошее использование метода String.replace (), +1 для творчества
 18 дек. 2014 г., 00:37
Я ценю общее чувство использования библиотек в качестве проверенного / закаленного в бою кода, но они также могут добавить сложность развертывания. Этот код делегирует все связанные с календарем тонкости базовому объекту Date и просто вызывает, например, метод getUTCDate () в соответствующем месте. Кроме того, если кто-то найдет ошибку в этом коде, он может сообщить об этом здесь на stackoverflow.com, по сути, совпадая с аспектом много-глаз / мелкие ошибки любой другой библиотеки. +1

вой поддержки. Поэтому я модифицировал

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

и использовал это. Увидетьhttps://github.com/adgang/atom-time/blob/master/lib/dateformat.js

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

формате без использования какой-либо библиотеки:

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

I think this actually answers your question.

После нескольких седых волос я поняла, что это было довольно просто.

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

Вот скрипка

 02 янв. 2019 г., 18:56
Вам нужно добавить 1 к месяцу, который начинается с нуля.

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

npm install dateformat

Затем напишите ваше требование:

var dateFormat = require('dateformat');


Then bind the value:

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

see dateformat

 01 сент. 2016 г., 18:08
Что такоеresult.request_date?

добавлены date-fns, некоторые заметки о Moment и Datejs
ОБНОВЛЕНИЕ 2016-09-14: Добавлен SugarJS, который, кажется, имеет отличные функции даты и времени.

Хорошо, так как никто не дал фактического ответа, вот мой.

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

Вот список основных Node-совместимых библиотек форматирования времени:

Moment.js [thanks to Mustafa] "A lightweight (4.3k) javascript date library for parsing, manipulating, and formatting dates" - Includes internationalization, calculations and relative date formats - Update 2017-03-29: Not quite so light-weight any more but still the most comprehensive solution, especially if you need timezone support. date-fns [added 2017-03-29, thanks to Fractalf] Small, fast, works with standard JS date objects. Great alternative to Moment if you don't need timezone support. SugarJS - A general helper library adding much needed features to JavaScripts built-in object types. Includes some excellent looking date/time capabilities. strftime - Just what it says, nice and simple dateutil - This is the one I used to use before MomentJS node-formatdate TimeTraveller - "Time Traveller provides a set of utility methods to deal with dates. From adding and subtracting, to formatting. Time Traveller only extends date objects that it creates, without polluting the global namespace." Tempus [thanks to Dan D] - UPDATE: this can also be used with Node and deployed with npm, see the docs

Есть также не-Node библиотеки:

Datejs [thanks to Peter Olson] - not packaged in npm or GitHub so not quite so easy to use with Node - not really recommended as not updated since 2007!
 26 февр. 2018 г., 15:15
Спасибо @alxndr, похоже на полезную перезагрузку.
 12 дек. 2016 г., 09:18
Это также очень актуальноdate-fns.org (github.com/date-fns/date-fns)
 21 февр. 2018 г., 06:34
У людей, стоящих за Моментом, есть эксперимент, названный Luxon с февраля 2018moment.github.io/luxon/index.html
 29 авг. 2018 г., 17:48
Момент + toISOString () на RunKit:runkit.com/shanekenyon87/5b845b0a64ab3f0012c9c607

Формат даты в 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
...
new Date().toString("yyyyMMddHHmmss").
      replace(/T/, ' ').  
      replace(/\..+/, '') 

replace(/T/, ' '). //replace T to ' ' 2017-01-15T...

replace(/..+/, '') //for ...13:50:16.1271

пример, см. вар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);

 16 янв. 2017 г., 14:31
@ user7396942 - теперь проголосовали за добавление контекста / объяснения в ваш ответ. Отказ от ответственности: я был не тот, кто ранее проголосовал против, как он стоит сейчас, похожеmuch лучше.
 16 янв. 2017 г., 01:29
Можете ли вы дать некоторые объяснения в контексте контекста вашего ответа?
 16 авг. 2017 г., 00:56
Почему.toString("yyyyMMddHHmmss")?
 16 янв. 2017 г., 06:28
@ T-Heron мой ответ отредактирован
 16 янв. 2017 г., 01:37
Добро пожаловать в StackOverflow. Пожалуйста, отредактируйте свой ответ, иначе вас могут опровергнуть. Как и сейчас, это просто предложение без контекста. Пожалуйста, смотрите здесь дляHow to Write a Good Answer.
Решение Вопроса

вы обязательно используете 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'

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

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

 19 апр. 2013 г., 02:33
Умное и простое решение, которое позволяет избежать использования библиотек - приятно!
 07 июн. 2016 г., 15:01
Обратите внимание, что при удалении часового пояса он теперь представляет различный момент времени в каждом часовом поясе с другим смещением.
 30 окт. 2014 г., 21:51
Если вы получили ошибку,Object has no method 'toISOString', Вы пропустилиnew
 26 авг. 2016 г., 12:17
@RobG Вы можете сказать это о любом представлении даты и времени, которое не имеет явного часового пояса.
 02 февр. 2015 г., 18:01
Следует отметить, что использование регулярных выражений медленным способом, и вам здесь даже не нужно, вот так:new Date().toISOString().replace('T', ' ').substr(0, 19) работает просто отлично.

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

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'

Ваш ответ на вопрос