Используя NodeJS, я хочу отформатировать Date
в следующий формат строки:
var ts_hms = new Date(UTC);
ts_hms.format("%Y-%m-%d %H:%M:%S");
Как я могу это сделать?
Используя NodeJS, я хочу отформатировать Date
в следующий формат строки:
var ts_hms = new Date(UTC);
ts_hms.format("%Y-%m-%d %H:%M:%S");
Как я могу это сделать?
Ответы:
Если вы используете 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'
Или в одну строку: new Date().toISOString().replace(/T/, ' ').replace(/\..+/, '')
ISO8601 обязательно является UTC (также обозначается завершающим Z в первом результате), поэтому вы получите UTC по умолчанию (всегда хорошо).
Object has no method 'toISOString'
вы пропустилиnew
new Date().toISOString().replace('T', ' ').substr(0, 19)
работает просто отлично.
ОБНОВЛЕНИЕ 2017-03-29: Добавлены date-fns, некоторые заметки по Moment и Datejs
ОБНОВЛЕНИЕ 2016-09-14: Добавлен SugarJS, который, кажется, имеет отличные функции даты / времени.
Хорошо, так как никто не дал фактического ответа, вот мой.
Библиотека, безусловно, является лучшим выбором для обработки дат и времени стандартным способом. В вычислениях даты / времени существует множество граничных случаев, поэтому полезно иметь возможность передать разработку в библиотеку.
Вот список основных Node-совместимых библиотек форматирования времени:
Есть также не-Node библиотеки:
Есть библиотека для конвертации:
npm install dateformat
Затем напишите ваше требование:
var dateFormat = require('dateformat');
Затем свяжите значение:
var day=dateFormat(new Date(), "yyyy-mm-dd h:MM:ss");
см. формат даты
result.request_date
?
Я ничего не имею против библиотек вообще. В этом случае библиотека общего назначения кажется излишней, если только другие части процесса приложения не имеют большой даты.
Написание небольших вспомогательных функций, таких как это, также является полезным упражнением как для начинающих, так и для опытных программистов, и может быть опытом обучения для новичков среди нас.
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" */
Легко читаемый и настраиваемый способ получения метки времени в нужном формате без использования какой-либо библиотеки:
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»)
Библиотека javascript sugar.js ( http://sugarjs.com/ ) имеет функции для форматирования дат
Пример:
Date.create().format('{dd}/{MM}/{yyyy} {hh}:{mm}:{ss}.{fff}')
Используйте метод, предоставленный в объекте 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
Я использую 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
...
new Date(2015,1,3,15,30).toLocaleString()
//=> 2015-02-03 15:30:00
3.2.2015, 15:30:00
Альтернатива № 6233 ....
Добавьте смещение UTC к местному времени, затем преобразуйте его в нужный формат с помощью toLocaleDateString()
метода Date
объекта:
// 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 в желаемом формате:
Используйте x-date
модуль, который является одним из подмодулей библиотеки x-class ;
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);
.toString("yyyyMMddHHmmss")
?
Для форматирования даты наиболее простым способом является использование момента lib. https://momentjs.com/
const moment = require('moment')
const current = moment().utc().format('Y-M-D H:M:S')
toISOString()
иtoUTCString()
Мне нужна была простая библиотека форматирования без наворотов и языковой поддержки. Поэтому я модифицировал
http://www.mattkruse.com/javascript/date/date.js
и использовал это. См. Https://github.com/adgang/atom-time/blob/master/lib/dateformat.js.
Документация довольно понятна.
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;
}
Проверьте код ниже и ссылку на MDN
// var ts_hms = new Date(UTC);
// ts_hms.format("%Y-%m-%d %H:%M:%S")
// exact format
console.log(new Date().toISOString().replace('T', ' ').substring(0, 19))
// other formats
console.log(new Date().toUTCString())
console.log(new Date().toLocaleString('en-US'))
console.log(new Date().toString())
Я думаю, что это на самом деле отвечает на ваш вопрос.
Так раздражает работа с датой / временем в 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);