Mit NodeJS möchte ich a Date
in das folgende Zeichenfolgenformat formatieren:
var ts_hms = new Date(UTC);
ts_hms.format("%Y-%m-%d %H:%M:%S");
Wie mache ich das?
Mit NodeJS möchte ich a Date
in das folgende Zeichenfolgenformat formatieren:
var ts_hms = new Date(UTC);
ts_hms.format("%Y-%m-%d %H:%M:%S");
Wie mache ich das?
Antworten:
Wenn Sie Node.js verwenden, verfügen Sie sicher über EcmaScript 5, und daher verfügt Date über eine toISOString
Methode. Sie fordern eine geringfügige Änderung von ISO8601:
new Date().toISOString()
> '2012-11-04T14:51:06.157Z'
Schneiden Sie einfach ein paar Dinge aus und schon sind Sie fertig:
new Date().toISOString().
replace(/T/, ' '). // replace T with a space
replace(/\..+/, '') // delete the dot and everything after
> '2012-11-04 14:55:45'
Oder in einer Zeile: new Date().toISOString().replace(/T/, ' ').replace(/\..+/, '')
ISO8601 ist notwendigerweise UTC (wird auch durch das nachfolgende Z im ersten Ergebnis angezeigt), daher erhalten Sie standardmäßig UTC (immer eine gute Sache).
Object has no method 'toISOString'
haben Sie verpasstnew
new Date().toISOString().replace('T', ' ').substr(0, 19)
funktioniert einwandfrei.
UPDATE 2017-03-29: Datum-fns hinzugefügt, einige Hinweise zu Moment und Datejs
UPDATE 2016-09-14: SugarJS hinzugefügt, das einige ausgezeichnete Datums- / Zeitfunktionen zu haben scheint.
OK, da niemand tatsächlich eine Antwort gegeben hat, ist hier meine.
Eine Bibliothek ist sicherlich die beste Wahl, um Datums- und Uhrzeitangaben auf übliche Weise zu behandeln. Es gibt viele Randfälle bei Datums- / Zeitberechnungen, daher ist es nützlich, die Entwicklung an eine Bibliothek übergeben zu können.
Hier ist eine Liste der wichtigsten knotenkompatiblen Zeitformatierungsbibliotheken:
Es gibt auch Nicht-Knoten-Bibliotheken:
Es gibt eine Bibliothek zur Konvertierung:
npm install dateformat
Dann schreiben Sie Ihre Anforderung:
var dateFormat = require('dateformat');
Binden Sie dann den Wert:
var day=dateFormat(new Date(), "yyyy-mm-dd h:MM:ss");
siehe Datumsformat
result.request_date
?
Ich habe nichts gegen Bibliotheken im Allgemeinen. In diesem Fall scheint eine Allzweckbibliothek übertrieben zu sein, es sei denn, andere Teile des Bewerbungsprozesses sind stark datiert.
Das Schreiben kleiner Dienstprogrammfunktionen wie diese ist sowohl für Anfänger als auch für erfahrene Programmierer eine nützliche Übung und kann für Anfänger unter uns eine Lernerfahrung sein.
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" */
Leicht lesbare und anpassbare Möglichkeit, einen Zeitstempel in Ihrem gewünschten Format ohne Verwendung einer Bibliothek zu erhalten:
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())
}
(Wenn Sie Zeit im UTC-Format benötigen, ändern Sie einfach die Funktionsaufrufe. Beispielsweise wird "getMonth" zu "getUTCMonth".)
Die Javascript-Bibliothek Sugar.js ( http://sugarjs.com/ ) verfügt über Funktionen zum Formatieren von Daten
Beispiel:
Date.create().format('{dd}/{MM}/{yyyy} {hh}:{mm}:{ss}.{fff}')
Verwenden Sie die im Date-Objekt angegebene Methode wie folgt:
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));
Es sieht wirklich schmutzig aus, sollte aber mit JavaScript-Kernmethoden gut funktionieren
Ich verwende das Datumsformat bei Nodejs und Angularjs, so gut
Installieren
$ npm install dateformat
$ dateformat --help
Demo
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
Alternative # 6233 ....
Fügen Sie den UTC-Offset zur Ortszeit hinzu und konvertieren Sie ihn dann mit der toLocaleDateString()
Methode des Date
Objekts in das gewünschte Format :
// 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));
Ich erstelle ein Datumsobjekt, das standardmäßig die Ortszeit verwendet. Ich füge den UTC-Versatz hinzu. Ich erstelle ein Datumsformatierungsobjekt. Ich zeige das UTC-Datum / die UTC-Uhrzeit im gewünschten Format an:
Verwendung - x-date
Modul , das eine der Submodule ist x-Klassenbibliothek ;
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(/\..+/, '')
mit .toString () wird dies im Format
ersetzen (/ T /, ''). // T durch '' ersetzen 2017-01-15T ...
Ersetzen Sie (/..+/, '') // durch ... 13: 50: 16.1271
Beispiel siehe var date
und 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")
?
Für die Datumsformatierung ist die Verwendung von moment lib am einfachsten. https://momentjs.com/
const moment = require('moment')
const current = moment().utc().format('Y-M-D H:M:S')
toISOString()
undtoUTCString()
Ich brauchte eine einfache Formatierungsbibliothek ohne die Schnickschnack der Gebietsschema- und Sprachunterstützung. Also habe ich modifiziert
http://www.mattkruse.com/javascript/date/date.js
und benutzte es. Siehe https://github.com/adgang/atom-time/blob/master/lib/dateformat.js
Die Dokumentation ist ziemlich klar.
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;
}
Ich denke, das beantwortet tatsächlich Ihre Frage.
Es ist so ärgerlich, mit Datum / Uhrzeit in Javascript zu arbeiten. Nach ein paar grauen Haaren stellte ich fest, dass das eigentlich ziemlich einfach war.
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);