Wie kann ich ein JavaScript-Datumsobjekt zum Drucken als 10-Aug-2010
formatieren?
Achtung: Nachfolgend finden Sie bessere Antworten. Diese Antwort wurde 2010 verfasst und seitdem gibt es neuere und bessere Lösungen. Das OP sollte eine andere Antwort akzeptieren.
function formatDate(date) {
var monthNames = [
"January", "February", "March",
"April", "May", "June", "July",
"August", "September", "October",
"November", "December"
];
var day = date.getDate();
var monthIndex = date.getMonth();
var year = date.getFullYear();
return day + ' ' + monthNames[monthIndex] + ' ' + year;
}
console.log(formatDate(new Date())); // show current date-time in console
Sie können das Array monthNames
bearbeiten, um Jan, Feb, Mar usw. zu verwenden.
toLocaleDateString()
Die toLocaleDateString()
-Methode gibt eine Zeichenfolge mit einer sprachabhängigen Darstellung des Datumsteils des Datums zurück. Mit den Argumenten Gebietsschemas und Optionen können Anwendungen die Sprache angeben, deren Formatierungskonventionen verwendet werden sollen, und das Verhalten der Funktion anpassen.
Alle diese Tasten sind optional. Sie können die Anzahl der Optionswerte basierend auf Ihren Anforderungen ändern. Dies spiegelt auch das Vorhandensein jedes Datums und Zeitbegriffs wider.
Hinweis: Wenn Sie nur die Inhaltsoptionen konfigurieren möchten, das aktuelle Gebietsschema jedoch weiterhin verwenden, führt die Übergabe von null
für den ersten Parameter zu einem Fehler. Verwenden Sie stattdessen undefined
.
Sie können mehr Sprachoptionen verwenden.
var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
var today = new Date();
console.log(today.toLocaleDateString("en-US")); // 9/17/2016
console.log(today.toLocaleDateString("en-US", options)); // Saturday, September 17, 2016
console.log(today.toLocaleDateString("hi-IN", options)); // शनिवार, 17 सितंबर 2016
Sie können auch die toLocaleString()
-Methode für denselben Zweck verwenden. Der einzige Unterschied besteht darin, dass diese Funktion die Zeit liefert, zu der Sie keine Optionen übergeben.
// Example
9/17/2016, 1:21:34 PM
Verwenden Sie die Bibliothek date.format :
var dateFormat = require('dateformat');
var now = new Date();
dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT");
kehrt zurück:
Saturday, June 9th, 2007, 5:46:21 PM
Wenn Sie Ihr Datum schnell mit reinem JavaScript formatieren müssen, verwenden Sie getDate
, getMonth + 1
, getFullYear
, getHours
und getMinutes
var d = new Date();
var datestring = d.getDate() + "-" + (d.getMonth()+1) + "-" + d.getFullYear() + " " +
d.getHours() + ":" + d.getMinutes();
// 16-5-2015 9:50
Oder wenn Sie es mit Nullen auffüllen müssen:
var datestring = ("0" + d.getDate()).slice(-2) + "-" + ("0"+(d.getMonth()+1)).slice(-2) + "-" +
d.getFullYear() + " " + ("0" + d.getHours()).slice(-2) + ":" + ("0" + d.getMinutes()).slice(-2);
// 16-05-2015 09:50
Nun, ich wollte das heutige Datum in einen MySQL freundlichen Datumsstring wie 2012-06-23 konvertieren und diesen String als Parameter in einer meiner Abfragen verwenden. Die einfache Lösung, die ich gefunden habe, ist folgende:
var today = new Date().toISOString().slice(0, 10);
Beachten Sie, dass die oben genannte Lösung nicht Ihren Zeitzonen-Offset berücksichtigt.
Verwenden Sie stattdessen diese Funktion:
function toJSONLocal (date) {
var local = new Date(date);
local.setMinutes(date.getMinutes() - date.getTimezoneOffset());
return local.toJSON().slice(0, 10);
}
Dadurch erhalten Sie das korrekte Datum, falls Sie diesen Code am Anfang/Ende des Tages ausführen.
Wenn Sie bereits mit jQuery UI in Ihrem Projekt arbeiten, können Sie dies folgendermaßen tun:
var formatted = $.datepicker.formatDate("M d, yy", new Date("2014-07-08T09:02:21.377"));
// formatted will be 'Jul 8, 2014'
Einige DatePicker-Datumsformat-Optionen zum Spielen sind verfügbar hier .
Bei festen Formaten erledigen Sie eine einfache Funktion. Das folgende Beispiel generiert das internationale Format JJJJ-MM-TT:
function dateToYMD(date) {
var d = date.getDate();
var m = date.getMonth() + 1; //Month from 0 to 11
var y = date.getFullYear();
return '' + y + '-' + (m<=9 ? '0' + m : m) + '-' + (d <= 9 ? '0' + d : d);
}
console.log(dateToYMD(new Date(2017,10,5))); // Nov 5
Das OP-Format kann wie folgt generiert werden:
function dateToYMD(date) {
var strArray=['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
var d = date.getDate();
var m = strArray[date.getMonth()];
var y = date.getFullYear();
return '' + (d <= 9 ? '0' + d : d) + '-' + m + '-' + y;
}
console.log(dateToYMD(new Date(2017,10,5))); // Nov 5
Hinweis: Es ist jedoch normalerweise keine gute Idee, die JavaScript-Standardbibliotheken zu erweitern (z. B. durch Hinzufügen dieser Funktion zum Prototyp von Date).
Eine erweiterte Funktion könnte auf Basis eines Formatparameters eine konfigurierbare Ausgabe generieren.
Wenn eine Formatierungsfunktion zu lang ist, gibt es viele Bibliotheken, um die es geht. Einige andere Antworten listen sie bereits auf. Zunehmende Abhängigkeiten haben aber auch einen Gegenpart.
Seit neueren Versionen von ECMAScript verfügt die Date
-Klasse über bestimmte Formatierungsfunktionen:
toDateString: Implementierungsabhängig, nur das Datum anzeigen.
http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.todatestring
new Date().toDateString(); // e.g. "Fri Nov 11 2016"
toISOString: Zeigt Datum und Uhrzeit von ISO 8601 an.
http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.toisostring
new Date().toISOString(); // e.g. "2016-11-21T08:00:00.000Z"
toJSON: Zeichenfolge für JSON.
http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tojson
new Date().toJSON(); // e.g. "2016-11-21T08:00:00.000Z"
toLocaleDateString: Implementierungsabhängig, ein Datum im Gebietsschemaformat.
http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocaledatestring
new Date().toLocaleDateString(); // e.g. "21/11/2016"
toLocaleString: Implementierungsabhängig, Datum und Uhrzeit im Gebietsschemaformat.
http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocalestring
new Date().toLocaleString(); // e.g. "21/11/2016, 08:00:00 AM"
toLocaleTimeString: Implementierungsabhängig, eine Zeit im Gebietsschemaformat.
http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocaletimestring
new Date().toLocaleTimeString(); // e.g. "08:00:00 AM"
toString: Generisches toString für Datum.
http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tostring
new Date().toString(); // e.g. "Fri Nov 21 2016 08:00:00 GMT+0100 (W. Europe Standard Time)"
Hinweis: Es ist möglich, aus diesen Formatierungen eine benutzerdefinierte Ausgabe zu generieren>
new Date().toISOString().slice(0,10); //return YYYY-MM-DD
Beispielausschnitte:
console.log("1) "+ new Date().toDateString());
console.log("2) "+ new Date().toISOString());
console.log("3) "+ new Date().toJSON());
console.log("4) "+ new Date().toLocaleDateString());
console.log("5) "+ new Date().toLocaleString());
console.log("6) "+ new Date().toLocaleTimeString());
console.log("7) "+ new Date().toString());
console.log("8) "+ new Date().toISOString().slice(0,10));
Ich denke, Sie können einfach die non-standard Date-Methode toLocaleFormat(formatString)
verwenden.
formatString: Eine Formatzeichenfolge im selben Format, die von der Funktion strftime()
in C erwartet wird.
var today = new Date();
today.toLocaleFormat('%d-%b-%Y'); // 30-Dec-2011
Verweise:
Normales JavaScript ist die beste Wahl für kleine Besucher.
Auf der anderen Seite, wenn Sie mehr Datumsmaterial benötigen, ist MomentJS eine tolle Lösung.
Zum Beispiel:
moment().format('YYYY-MM-DD HH:m:s'); // now() -> 2015-03-24 14:32:20
moment("20111031", "YYYYMMDD").fromNow(); // 3 years ago
moment("20120620", "YYYYMMDD").fromNow(); // 3 years ago
moment().startOf('day').fromNow(); // 11 hours ago
moment().endOf('day').fromNow(); // in 13 hours
In modernen Browsern (*) können Sie Folgendes tun:
var today = new Date().toLocaleDateString('en-GB', {
day : 'numeric',
month : 'short',
year : 'numeric'
}).split(' ').join('-');
Ausgabe, wenn heute ausgeführt (24. Januar 2016):
'24-Jan-2016'
(*)Laut MDN bedeutet "moderne Browser" Chrome 24+, Firefox 29+, Internet Explorer 11, Edge 12+, Opera 15+ und Safari nightly bauen .
Sie sollten einen Blick auf date.js werfen. Es gibt viele praktische Helfer für die Arbeit mit Datumsangaben, beispielsweise in Ihrem Fall:
var date = Date.parse('2010-08-10');
console.log(date.toString('dd-MMM-yyyy'));
Erste Schritte: http://www.datejs.com/2007/11/27/getting-started-with-datejs/
Ich kann das angeforderte Format in einer Zeile erhalten, ohne Bibliotheken und Date-Methoden. Regex:
var d = (new Date()).toString().replace(/\S+\s(\S+)\s(\d+)\s(\d+)\s.*/,'$2-$1-$3');
// date will be formatted as "14-Oct-2015" (pass any date object in place of 'new Date()')
Update: Wie @RobG darauf hinweist, ist die Ausgabe von Date.prototype.toString () implementierungsabhängig. Verwenden Sie diese Lösung daher mit Vorsicht und ändern Sie sie gegebenenfalls für Ihre Implementierungen. In meinen Tests funktioniert dies zuverlässig in Nordamerika, wo die wichtigsten Browser (Chrome, Safari, Firefox und IE) das gleiche Stringformat zurückgeben.
@ Sébastien - Alternative alle Browser-Unterstützung
new Date(parseInt(496407600)*1000).toLocaleDateString('de-DE', {
year: 'numeric',
month: '2-digit',
day: '2-digit'
}).replace(/\./g, '/');
Dokumentation: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString
Verwenden einer Stringvorlage für ECMAScript Edition 6 (ES6/ES2015):
let d = new Date();
let formatted = `${d.getFullYear()}-${d.getMonth() + 1}-${d.getDate()}`;
Wenn Sie die Trennzeichen ändern müssen:
const delimiter = '/';
let formatted = [d.getFullYear(), d.getMonth() + 1, d.getDate()].join(delimiter);
Paketlösung: Luxon
Wenn Sie eine einheitliche Lösung für alle verwenden möchten, empfehle ich dringend die Verwendung von Luxon (eine modernisierte Version von Moment.js ), die auch Formatierungen in vielen Gebietsschemas/Sprachen und unzähligen anderen Funktionen ausführt.
Luxon wird auf der Moment.js-Website gehostet und von einem Moment.js-Entwickler entwickelt, da Moment.js Einschränkungen aufweist, die der Entwickler ansprechen wollte, aber nicht konnte.
Installieren:
npm install luxon
Oder yarn add luxon
(Besuchen Sie den Link für andere Installationsmethoden)
Beispiel:
luxon.DateTime.fromISO('2010-08-10').toFormat('yyyy-LLL-dd');
Erträge:
10.08.2010
Manuelle Lösung
Unter Verwendung einer ähnlichen Formatierung wie Moment.js, Class DateTimeFormatter (Java) und Class SimpleDateFormat (Java) implementierte ich eine umfassende Lösung formatDate(date, patternStr)
, in der der Code enthalten ist ist leicht zu lesen und zu ändern. Sie können Datum, Uhrzeit, AM/PM usw. anzeigen. Weitere Beispiele finden Sie im Code.
Beispiel:
formatDate(new Date(), 'EEEE, MMMM d, yyyy HH:mm:ss:S')
(formatDate
ist im folgenden Code-Snippet implementiert)
Erträge:
Freitag, 12. Oktober 2018, 18: 11: 23: 445 Uhr
Probieren Sie den Code aus, indem Sie auf "Code-Snippet ausführen" klicken.
Datums- und Zeitmuster
yy
= zweistelliges Jahr; yyyy
= ganzes Jahr
M
= stelliger Monat; MM
= zweistelliger Monat; MMM
= kurzer Monatsname; MMMM
= vollständiger Monatsname
EEEE
= vollständiger Wochentagsname; EEE
= kurzer Wochentagsname
d
= stelliger Tag; dd
= zweistelliger Tag
h
= Stunden am/pm; hh
= zweistellige Stunden am/pm; H
= Stunden; HH
= zweistellige Stunden
m
= Minuten; mm
= 2-stellige Minuten; aaa
= AM/PM
s
= Sekunden; ss
= 2-stellige Sekunden
S
= Millisekunden
var monthNames = [
"January", "February", "March", "April", "May", "June", "July",
"August", "September", "October", "November", "December"
];
var dayOfWeekNames = [
"Sunday", "Monday", "Tuesday",
"Wednesday", "Thursday", "Friday", "Saturday"
];
function formatDate(date, patternStr){
if (!patternStr) {
patternStr = 'M/d/yyyy';
}
var day = date.getDate(),
month = date.getMonth(),
year = date.getFullYear(),
hour = date.getHours(),
minute = date.getMinutes(),
second = date.getSeconds(),
miliseconds = date.getMilliseconds(),
h = hour % 12,
hh = twoDigitPad(h),
HH = twoDigitPad(hour),
mm = twoDigitPad(minute),
ss = twoDigitPad(second),
aaa = hour < 12 ? 'AM' : 'PM',
EEEE = dayOfWeekNames[date.getDay()],
EEE = EEEE.substr(0, 3),
dd = twoDigitPad(day),
M = month + 1,
MM = twoDigitPad(M),
MMMM = monthNames[month],
MMM = MMMM.substr(0, 3),
yyyy = year + "",
yy = yyyy.substr(2, 2)
;
// checks to see if month name will be used
patternStr = patternStr
.replace('hh', hh).replace('h', h)
.replace('HH', HH).replace('H', hour)
.replace('mm', mm).replace('m', minute)
.replace('ss', ss).replace('s', second)
.replace('S', miliseconds)
.replace('dd', dd).replace('d', day)
.replace('EEEE', EEEE).replace('EEE', EEE)
.replace('yyyy', yyyy)
.replace('yy', yy)
.replace('aaa', aaa);
if (patternStr.indexOf('MMM') > -1) {
patternStr = patternStr
.replace('MMMM', MMMM)
.replace('MMM', MMM);
}
else {
patternStr = patternStr
.replace('MM', MM)
.replace('M', M);
}
return patternStr;
}
function twoDigitPad(num) {
return num < 10 ? "0" + num : num;
}
console.log(formatDate(new Date()));
console.log(formatDate(new Date(), 'dd-MMM-yyyy')); //OP's request
console.log(formatDate(new Date(), 'EEEE, MMMM d, yyyy HH:mm:ss.S aaa'));
console.log(formatDate(new Date(), 'EEE, MMM d, yyyy HH:mm'));
console.log(formatDate(new Date(), 'yyyy-MM-dd HH:mm:ss.S'));
console.log(formatDate(new Date(), 'M/dd/yyyy h:mmaaa'));
Vielen Dank an @Gerry, dass Sie Luxon erwähnt haben.
Hier ist ein Code, den ich gerade geschrieben habe, um die Datumsformatierung für ein Projekt zu bearbeiten, an dem ich gerade arbeite. Es ahmt die Datumsformatierungsfunktion PHP nach, die meinen Bedürfnissen entspricht. Fühlen Sie sich frei, es zu verwenden, es erweitert lediglich das bereits vorhandene Date () - Objekt. Dies ist vielleicht nicht die eleganteste Lösung, aber es funktioniert für meine Bedürfnisse.
var d = new Date();
d_string = d.format("m/d/Y h:i:s");
/**************************************
* Date class extension
*
*/
// Provide month names
Date.prototype.getMonthName = function(){
var month_names = [
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December'
];
return month_names[this.getMonth()];
}
// Provide month abbreviation
Date.prototype.getMonthAbbr = function(){
var month_abbrs = [
'Jan',
'Feb',
'Mar',
'Apr',
'May',
'Jun',
'Jul',
'Aug',
'Sep',
'Oct',
'Nov',
'Dec'
];
return month_abbrs[this.getMonth()];
}
// Provide full day of week name
Date.prototype.getDayFull = function(){
var days_full = [
'Sunday',
'Monday',
'Tuesday',
'Wednesday',
'Thursday',
'Friday',
'Saturday'
];
return days_full[this.getDay()];
};
// Provide full day of week name
Date.prototype.getDayAbbr = function(){
var days_abbr = [
'Sun',
'Mon',
'Tue',
'Wed',
'Thur',
'Fri',
'Sat'
];
return days_abbr[this.getDay()];
};
// Provide the day of year 1-365
Date.prototype.getDayOfYear = function() {
var onejan = new Date(this.getFullYear(),0,1);
return Math.ceil((this - onejan) / 86400000);
};
// Provide the day suffix (st,nd,rd,th)
Date.prototype.getDaySuffix = function() {
var d = this.getDate();
var sfx = ["th","st","nd","rd"];
var val = d%100;
return (sfx[(val-20)%10] || sfx[val] || sfx[0]);
};
// Provide Week of Year
Date.prototype.getWeekOfYear = function() {
var onejan = new Date(this.getFullYear(),0,1);
return Math.ceil((((this - onejan) / 86400000) + onejan.getDay()+1)/7);
}
// Provide if it is a leap year or not
Date.prototype.isLeapYear = function(){
var yr = this.getFullYear();
if ((parseInt(yr)%4) == 0){
if (parseInt(yr)%100 == 0){
if (parseInt(yr)%400 != 0){
return false;
}
if (parseInt(yr)%400 == 0){
return true;
}
}
if (parseInt(yr)%100 != 0){
return true;
}
}
if ((parseInt(yr)%4) != 0){
return false;
}
};
// Provide Number of Days in a given month
Date.prototype.getMonthDayCount = function() {
var month_day_counts = [
31,
this.isLeapYear() ? 29 : 28,
31,
30,
31,
30,
31,
31,
30,
31,
30,
31
];
return month_day_counts[this.getMonth()];
}
// format provided date into this.format format
Date.prototype.format = function(dateFormat){
// break apart format string into array of characters
dateFormat = dateFormat.split("");
var date = this.getDate(),
month = this.getMonth(),
hours = this.getHours(),
minutes = this.getMinutes(),
seconds = this.getSeconds();
// get all date properties ( based on PHP date object functionality )
var date_props = {
d: date < 10 ? '0'+date : date,
D: this.getDayAbbr(),
j: this.getDate(),
l: this.getDayFull(),
S: this.getDaySuffix(),
w: this.getDay(),
z: this.getDayOfYear(),
W: this.getWeekOfYear(),
F: this.getMonthName(),
m: month < 10 ? '0'+(month+1) : month+1,
M: this.getMonthAbbr(),
n: month+1,
t: this.getMonthDayCount(),
L: this.isLeapYear() ? '1' : '0',
Y: this.getFullYear(),
y: this.getFullYear()+''.substring(2,4),
a: hours > 12 ? 'pm' : 'am',
A: hours > 12 ? 'PM' : 'AM',
g: hours % 12 > 0 ? hours % 12 : 12,
G: hours > 0 ? hours : "12",
h: hours % 12 > 0 ? hours % 12 : 12,
H: hours,
i: minutes < 10 ? '0' + minutes : minutes,
s: seconds < 10 ? '0' + seconds : seconds
};
// loop through format array of characters and add matching data else add the format character (:,/, etc.)
var date_string = "";
for(var i=0;i<dateFormat.length;i++){
var f = dateFormat[i];
if(f.match(/[a-zA-Z]/g)){
date_string += date_props[f] ? date_props[f] : '';
} else {
date_string += f;
}
}
return date_string;
};
/*
*
* END - Date class extension
*
************************************/
Wenn Sie in Ihrem Code die jQuery-Benutzeroberfläche verwenden, gibt es eine integrierte Funktion mit dem Namen formatDate()
. Ich benutze es auf diese Weise, um das heutige Datum zu formatieren:
var testdate = Date();
testdate = $.datepicker.formatDate( "d-M-yy",new Date(testdate));
alert(testdate);
Wir haben viele Lösungen dafür, aber ich denke, das Beste davon ist Moment.js. Daher schlage ich persönlich vor, Moment.js für Datums- und Uhrzeitoperationen zu verwenden.
console.log(moment().format('DD-MMM-YYYY'));
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>
new Date().toLocaleDateString()
// "3/21/2018"
Weitere Dokumentation unter developer.mozilla.org
JavaScript-Lösung ohne externe Bibliotheken:
var now = new Date()
months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
var formattedDate = now.getDate()+"-"+months[now.getMonth()]+"-"+now.getFullYear()
alert(formattedDate)
So habe ich meine npm-Plugins implementiert
var monthNames = [
"January", "February", "March",
"April", "May", "June", "July",
"August", "September", "October",
"November", "December"
];
var Days = [
"Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday"
];
var formatDate = function(dt,format){
format = format.replace('ss', pad(dt.getSeconds(),2));
format = format.replace('s', dt.getSeconds());
format = format.replace('dd', pad(dt.getDate(),2));
format = format.replace('d', dt.getDate());
format = format.replace('mm', pad(dt.getMinutes(),2));
format = format.replace('m', dt.getMinutes());
format = format.replace('MMMM', monthNames[dt.getMonth()]);
format = format.replace('MMM', monthNames[dt.getMonth()].substring(0,3));
format = format.replace('MM', pad(dt.getMonth()+1,2));
format = format.replace(/M(?![ao])/, dt.getMonth()+1);
format = format.replace('DD', Days[dt.getDay()]);
format = format.replace(/D(?!e)/, Days[dt.getDay()].substring(0,3));
format = format.replace('yyyy', dt.getFullYear());
format = format.replace('YYYY', dt.getFullYear());
format = format.replace('yy', (dt.getFullYear()+"").substring(2));
format = format.replace('YY', (dt.getFullYear()+"").substring(2));
format = format.replace('HH', pad(dt.getHours(),2));
format = format.replace('H', dt.getHours());
return format;
}
pad = function(n, width, z) {
z = z || '0';
n = n + '';
return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
}
Eine nützliche und flexible Methode zum Formatieren der DateTimes in JavaScript ist Intl.DateTimeFormat
:
var date = new Date();
var options = { year: 'numeric', month: 'short', day: '2-digit'};
var _resultDate = new Intl.DateTimeFormat('en-GB', options).format(date);
// The _resultDate is: "12 Oct 2017"
// Replace all spaces with - and then log it.
console.log(_resultDate.replace(/ /g,'-'));
Ergebnis ist: "12-Oct-2017"
Die Datums- und Uhrzeitformate können mit dem Argument "options" angepasst werden.
Das Intl.DateTimeFormat
-Objekt ist ein Konstruktor für Objekte, die eine sprachabhängige Formatierung von Datum und Uhrzeit ermöglichen.
Syntax
new Intl.DateTimeFormat([locales[, options]])
Intl.DateTimeFormat.call(this[, locales[, options]])
Parameter
locales
Wahlweise. Eine Zeichenfolge mit einem BCP 47-Sprachkennzeichen oder ein Array solcher Zeichenfolgen. Die allgemeine Form und Interpretation des Gebietsschemas finden Sie auf der Seite Intl. Die folgenden Unicode-Erweiterungsschlüssel sind zulässig:
nu
Numbering system. Possible values include: "arab", "arabext", "bali", "beng", "deva", "fullwide", "gujr", "guru", "hanidec", "khmr", "knda", "laoo", "latn", "limb", "mlym", "mong", "mymr", "orya", "tamldec", "telu", "thai", "tibt".
ca
Calendar. Possible values include: "buddhist", "chinese", "coptic", "ethioaa", "ethiopic", "gregory", "hebrew", "indian", "islamic", "islamicc", "iso8601", "japanese", "persian", "roc".
Optionen
Wahlweise. Ein Objekt mit einigen oder allen der folgenden Eigenschaften:
localeMatcher
Der zu verwendende Locale-Matching-Algorithmus. Mögliche Werte sind "lookup"
und "best fit"
; Der Standardwert ist "best fit"
. Informationen zu dieser Option finden Sie auf der Seite Intl.
Zeitzone
Die zu verwendende Zeitzone. Der einzige Wert, den Implementierungen erkennen müssen, ist "UTC"
; Die Standardeinstellung ist die Standardzeitzone der Laufzeitumgebung. Implementierungen können auch die Zeitzonennamen der IANA-Zeitzonendatenbank erkennen, beispielsweise "Asia/Shanghai"
, "Asia/Kolkata"
, "America/New_York"
.
hour12
Gibt an, ob 12 Stunden verwendet werden sollen (im Gegensatz zu 24 Stunden). Mögliche Werte sind true
und false
; Die Standardeinstellung ist abhängig vom Gebietsschema.
formatMatcher
Der zu verwendende Formatanpassungsalgorithmus. Mögliche Werte sind "basic"
und "best fit"
; Der Standardwert ist "best fit"
. Informationen zur Verwendung dieser Eigenschaft finden Sie in den folgenden Absätzen.
Die folgenden Eigenschaften beschreiben die Datum-Uhrzeit-Komponenten, die in der formatierten Ausgabe verwendet werden sollen, und ihre gewünschten Repräsentationen. Implementierungen sind erforderlich, um mindestens die folgenden Teilmengen zu unterstützen:
weekday, year, month, day, hour, minute, second
weekday, year, month, day
year, month, day
year, month
month, day
hour, minute, second
hour, minute
Implementierungen können andere Teilmengen unterstützen, und Anforderungen werden mit allen verfügbaren Kombinationen von Teilmengenrepräsentationen ausgehandelt, um die beste Übereinstimmung zu finden. Für diese Aushandlung stehen zwei Algorithmen zur Verfügung, die von der formatMatcher-Eigenschaft ausgewählt werden: Ein vollständig spezifizierter "basic"
-Algorithmus und ein implementierungsabhängiger "Best-Fit" - Algorithmus.
Wochentag
Die Darstellung des Wochentags. Mögliche Werte sind "narrow"
, "short"
, "long"
.
Ära
Die Darstellung der Ära. Mögliche Werte sind "narrow"
, "short"
, "long"
.
Jahr
Die Darstellung des Jahres. Mögliche Werte sind "numeric"
, "2-digit"
.
Monat
Die Darstellung des Monats. Mögliche Werte sind "numeric"
, "2-digit"
, "narrow"
, "short"
, "long"
.
Tag
Die Darstellung des Tages. Mögliche Werte sind "numeric"
, "2-digit"
.
Stunde
Die Darstellung der Stunde. Mögliche Werte sind "numeric"
, "2-digit"
.
Minute
Die Darstellung der Minute. Mögliche Werte sind "numeric"
, "2-digit"
.
zweite
Die Darstellung des zweiten. Mögliche Werte sind "numeric"
, "2-digit"
.
ZeitzoneName
Die Darstellung des Zeitzonennamens. Mögliche Werte sind "short"
, "long"
. Der Standardwert für jede Datums-/Uhrzeit-Komponenteneigenschaft ist undefiniert. Wenn jedoch alle Komponenteneigenschaften undefiniert sind, wird als Jahr, Monat und Tag "numeric"
angenommen.
OK, wir haben etwas namens Intl, was sehr nützlich ist, um ein Datum in JavaScript zu formatieren:
Ihr Datum als unten:
var date = '10/8/2010';
Und Sie wechseln zu Datum, indem Sie wie folgt das neue Datum () verwenden:
date = new Date(date);
Und jetzt können Sie es mit einer Liste von locales wie folgt formatieren:
date = new Intl.DateTimeFormat('en-AU').format(date); // Australian date format: "8/10/2010"
date = new Intl.DateTimeFormat('en-US').format(date); // USA date format: "10/8/2010"
date = new Intl.DateTimeFormat('ar-EG').format(date); // Arabic date format: "٨/١٠/٢٠١٠"
Wenn Sie genau das von Ihnen erwähnte Format wünschen, können Sie Folgendes tun:
date = new Date(Date.UTC(2010, 7, 10, 0, 0, 0));
var options = {year: "numeric", month: "short", day: "numeric"};
date = new Intl.DateTimeFormat("en-AU", options).format(date).replace(/\s/g, '-');
Und das Ergebnis wird sein:
"10-Aug-2010"
Weitere Informationen zu ECMAScript Internationalization API (Intl) finden Sie unter hier .
var today = new Date();
var formattedToday = today.toLocaleDateString() + ' ' + today.toLocaleTimeString();
Für alle, die eine wirklich einfache ES6-Lösung zum Kopieren, Einfügen und Übernehmen suchen:
const dateToString = d => `${d.getFullYear()}-${('00' + (d.getMonth() + 1)).slice(-2)}-${('00' + d.getDate()).slice(-2)}`
// how to use:
const myDate = new Date(Date.parse('04 Dec 1995 00:12:00 GMT'))
console.log(dateToString(myDate)) // 1995-12-04
Sugar.js verfügt über hervorragende Erweiterungen für das Date-Objekt, einschließlich der Methode Date.format .
Beispiele aus der Dokumentation:
Date.create().format('{Weekday} {Month} {dd}, {yyyy}');
Date.create().format('{12hr}:{mm}{tt}')
DateFormatter.formatDate(new Date(2010,7,10), 'DD-MMM-YYYY')
=> 10-Aug-2010
DateFormatter.formatDate(new Date(), 'YYYY-MM-DD HH:mm:ss')
=> 2017-11-22 19:52:37
DateFormatter.formatDate(new Date(2005, 1, 2, 3, 4, 5), 'D DD DDD DDDD, M MM MMM MMMM, YY YYYY, h hh H HH, m mm, s ss, a A')
=> 2 02 Wed Wednesday, 2 02 Feb February, 05 2005, 3 03 3 03, 4 04, 5 05, am AM
var DateFormatter = {
monthNames: [
"January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"
],
dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
formatDate: function (date, format) {
var self = this;
format = self.getProperDigits(format, /d+/gi, date.getDate());
format = self.getProperDigits(format, /M+/g, date.getMonth() + 1);
format = format.replace(/y+/gi, function (y) {
var len = y.length;
var year = date.getFullYear();
if (len == 2)
return (year + "").slice(-2);
else if (len == 4)
return year;
return y;
})
format = self.getProperDigits(format, /H+/g, date.getHours());
format = self.getProperDigits(format, /h+/g, self.getHours12(date.getHours()));
format = self.getProperDigits(format, /m+/g, date.getMinutes());
format = self.getProperDigits(format, /s+/gi, date.getSeconds());
format = format.replace(/a/ig, function (a) {
var amPm = self.getAmPm(date.getHours())
if (a === 'A')
return amPm.toUpperCase();
return amPm;
})
format = self.getFullOr3Letters(format, /d+/gi, self.dayNames, date.getDay())
format = self.getFullOr3Letters(format, /M+/g, self.monthNames, date.getMonth())
return format;
},
getProperDigits: function (format, regex, value) {
return format.replace(regex, function (m) {
var length = m.length;
if (length == 1)
return value;
else if (length == 2)
return ('0' + value).slice(-2);
return m;
})
},
getHours12: function (hours) {
// https://stackoverflow.com/questions/10556879/changing-the-1-24-hour-to-1-12-hour-for-the-gethours-method
return (hours + 24) % 12 || 12;
},
getAmPm: function (hours) {
// https://stackoverflow.com/questions/8888491/how-do-you-display-javascript-datetime-in-12-hour-am-pm-format
return hours >= 12 ? 'pm' : 'am';
},
getFullOr3Letters: function (format, regex, nameArray, value) {
return format.replace(regex, function (s) {
var len = s.length;
if (len == 3)
return nameArray[value].substr(0, 3);
else if (len == 4)
return nameArray[value];
return s;
})
}
}
console.log(DateFormatter.formatDate(new Date(), 'YYYY-MM-DD HH:mm:ss'));
console.log(DateFormatter.formatDate(new Date(), 'D DD DDD DDDD, M MM MMM MMMM, YY YYYY, h hh H HH, m mm, s ss, a A'));
console.log(DateFormatter.formatDate(new Date(2005, 1, 2, 3, 4, 5), 'D DD DDD DDDD, M MM MMM MMMM, YY YYYY, h hh H HH, m mm, s ss, a A'));
Die Formatbeschreibung stammt von Ionic Framework (unterstützt nicht Z
, UTC Timezone Offset)
Nicht gründlich getestet
Versuche dies:
function init(){
var d = new Date();
var day = d.getDate();
var x = d.toDateString().substr(4, 3);
var year = d.getFullYear();
document.querySelector("#mydate").innerHTML = day + '-' + x + '-' + year;
}
window.onload = init;
<div id="mydate"></div>
Es gibt eine neue Bibliothek, smarti.to.js , zur lokalisierten Formatierung von JavaScript-Nummern, Datumsangaben und JSON-Daten (Microsoft oder ISO8601).
Beispiel:
new Date('2015-1-1').to('dd.MM.yy') // Outputs 01.01.2015
"2015-01-01T10:11:12.123Z".to('dd.MM.yy') // Outputs 01.01.2015
In der Lokalisierungsdatei (smarti.to. {Culture} .js) sind auch benutzerdefinierte Kurzmuster definiert. Beispiel (smarti.to.et-EE.js):
new Date('2015-1-1').to('d') // Outputs 1.01.2015
Und eine Multiformat-Fähigkeit:
smarti.format('{0:n2} + {1:n2} = {2:n2}', 1, 2, 3) // Output: 1,00 + 2,00 = 3,00
Inspiriert von der wunderbaren Lösung für reguläre Ausdrücke von JD Smith hatte ich plötzlich die Idee des Kopfes:
var D = Date().toString().split(" ");
document.getElementById("demo").innerHTML = D[2] + "-" + D[1] + "-" + D[3];
Wenn Sie eine kurze, von Menschen lesbare Funktion wünschen, kann diese leicht an Ihre Bedürfnisse angepasst werden.
Der Parameter timeStamp ist Millisekunden von 1970 - er wird von new Date().getTime()
und vielen anderen Geräten zurückgegeben.
OK, ich habe meine Meinung geändert. Ich habe eine zusätzliche Funktion für das Nullstellen hinzugefügt. Flüche!
function zeroPad(aNumber) {
return ("0"+aNumber).slice(-2);
}
function humanTime(timeStamp) {
var M = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
var D = new Date(timeStamp); // 23 Aug 2016 16:45:59 <-- Desired format.
return D.getDate() + " " + M[D.getMonth()] + " " + D.getFullYear() + " " + D.getHours() + ":" + zeroPad(d.getMinutes()) + ":" + zeroPad(D.getSeconds());
}
Fügen Sie Ihrer Seite das jQuery UI plugin hinzu:
function DateFormate(dateFormate, datetime) {
return $.datepicker.formatDate(dateFormate, datetime);
};
Ich benutze das Folgende. Es ist einfach und funktioniert gut.
var dtFormat = require('dtformat');
var today = new Date();
dtFormat(today, "dddd, mmmm dS, yyyy, h:MM:ss TT");
Oder dieses:
var now = new Date()
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
var formattedDate = now.getDate() + "-" + months[now.getMonth()] + "-" + now.getFullYear()
alert(formattedDate)
Hier ist ein Skript, das genau das macht, was Sie wollen
https://github.com/UziTech/js-date-format
var d = new Date("2010-8-10");
document.write(d.format("DD-MMM-YYYY"));
Anders als Sie Datum formatieren können
function formatDate(dDate,sMode){
var today = dDate;
var dd = today.getDate();
var mm = today.getMonth()+1; //January is 0!
var yyyy = today.getFullYear();
if(dd<10) {
dd = '0'+dd
}
if(mm<10) {
mm = '0'+mm
}
if (sMode+""==""){
sMode = "dd/mm/yyyy";
}
if (sMode == "yyyy-mm-dd"){
return yyyy + "-" + mm + "-" + dd + "";
}
if (sMode == "dd/mm/yyyy"){
return dd + "/" + mm + "/" + yyyy;
}
}
Wenn Sie bereits ExtJS in Ihrem Projekt verwenden, können Sie Ext.Date verwenden:
var date = new Date();
Ext.Date.format(date, "d-M-Y");
kehrt zurück:
"11-Nov-2015"
Ich poste hier für zukünftige Referenzzwecke und bereit zum Kopieren und Einfügen. Dies ist die Hauptantwort, die modifiziert wurde, um 3-Monatsmonate und ein 2-stelliges Jahr zu haben:
function formatDate(date) {
var monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
var day = date.getDate(), monthIndex = date.getMonth(), year = date.getFullYear().toString().substr(-2);
return day + ' ' + monthNames[monthIndex] + ' ' + year;
}
document.write(formatDate(new Date()));
Ich weiß, dass jemand sagen könnte, dass dies eine dumme Lösung ist, aber es macht den Trick, um die unnötigen Informationen vom Datum zu entfernen.
yourDateObject
erzeugt:
Mi Dez 13 2017 20:40:40 GMT + 0200 (EET)
yourDateObject.toString().slice(0, 15);
produziert:
Mi 13 Dez 2017
Mit dem folgenden Code können Sie das Datum entweder in DD-MM-YYYY
(27-12-2017) oder DD MMM YYYY
(27 Dez 2017) formatieren:
/** Pad number to fit into nearest power of 10 */
function padNumber(number, prependChar, count) {
var out = '' + number; var i;
if (number < Math.pow(10, count))
while (out.length < ('' + Math.pow(10, count)).length) out = prependChar + out;
return out;
}
/* Format the date to 'DD-MM-YYYY' or 'DD MMM YYYY' */
function dateToDMY(date, useNumbersOnly) {
var months = [
'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct',
'Nov', 'Dec'
];
return '' + padNumber(date.getDate(), '0', 1) +
(useNumbersOnly? '-' + padNumber(date.getMonth() + 1, '0', 1) + '-' : ' ' + months[date.getMonth()] + ' ')
+ date.getFullYear();
}
Ändern Sie die Reihenfolge von date.getFullYear()
und padNumber(date.getDate(), '0', 1)
, um eine dateToYMD()
-Funktion zu erstellen.
Siehe repl.it Beispiel für Details.
Kurzer, weitgehend kompatibler Ansatz:
function formatDate(date) {
date.toISOString()
.replace(/^(\d+)-(\d+)-(\d+).*$/, // Only extract Y-M-D
function (a,y,m,d) {
return [
d, // Day
['Jan','Feb','Mar','Apr','May','Jun', // Month Names
'Jul','Ago','Sep','Oct','Nov','Dec']
[m-1], // Month
y // Year
].join('-') // Stitch together
})
}
Oder als einzelne Zeile:
date.toISOString().replace(/^(\d+)-(\d+)-(\d+)T(\d+):(\d+):(\d+).(\d+)Z$/, function (a,y,m,d) {return [d,['Jan','Feb','Mar','Apr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic'][m-1],y].join('-')})
2,39 KB minifiziert. Eine Datei https://github.com/rhroyston/clock-js
10-Aug-2010 wäre:
var str = clock.month
str.charAt(0).toUpperCase() + str.slice(1,3); //gets you "Aug"
console.log(clock.day + '-' + str + '-' + clock.year); //gets you 10-Aug-2010
Dieses Modul kann mit Leichtigkeit fast jeden Fall behandeln, den es gibt. Es ist Teil eines größeren npm - Pakets von Locutus, das eine Vielzahl von Funktionen enthält, aber völlig unabhängig vom eigenen Paket verwendet werden kann. Kopieren Sie es einfach, fügen Sie es ein oder passen Sie es ein wenig an, wenn Sie nicht mit npm arbeiten Funktion)
Als zweiten Parameter wird ein Zeitstempel akzeptiert, der von überall kommen kann, z. B. Date.getTime ().
Locutus verwaltet auch ein größeres datetime-Modul, das sich ebenfalls im locutus-Paket befindet und eine objektorientiertere Verwendung bietet
Hier sehen Sie andere datetime-Funktionen als Module, die sich auch als sehr nützlich erwiesen haben.
Sie finden Dokumentation zu Parametern und Format-Strings hier (beachten Sie, dass die Doc-Site eine PHP-Site ist, die Locutus-Implementierung jedoch genau den gleichen Spezifikationen folgt)
Beispiele für Datum Modul
date('H:m:s \\m \\i\\s \\m\\o\\n\\t\\h', 1062402400)//'07:09:40 m is month'
date('F j, Y, g:i a', 1062462400)//'September 2, 2003, 12:26 am'
date('Y W o', 1062462400)//'2003 36 2003'
var $x = date('Y m d', (new Date()).getTime() / 1000) $x = $x + '' var $result = $x.length // 2009 01 09 10
date('W', 1104534000) //'52'
date('B t', 1104534000) //'999 31'
date('W U', 1293750000.82); // 2010-12-31 '52 1293750000'
date('W', 1293836400); // 2011-01-01 '52'
date('W Y-m-d', 1293974054); // 2011-01-02 '52 2011-01-02'
Um "10-Aug-2010" zu erhalten, versuchen Sie:
var date = new Date('2010-08-10 00:00:00');
date = date.toLocaleDateString(undefined, {day:'2-digit'}) + '-' + date.toLocaleDateString(undefined, {month:'short'}) + '-' + date.toLocaleDateString(undefined, {year:'numeric'})
Zur Browserunterstützung siehe toLocaleDateString .
Einfache Funktion, die das Datum, das Datum + die Uhrzeit oder nur die Uhrzeit zurückgeben kann:
var myDate = dateFormatter( "2019-01-24 11:33:24", "date-time" );
// >> RETURNS "January 24, 2019 11:33:24"
var myDate2 = dateFormatter( "2019-01-24 11:33:24", "date" );
// >> RETURNS "January 24, 2019"
var myDate3 = dateFormatter( "2019-01-24 11:33:24", "time" );
// >> RETURNS "11:33:24"
function dateFormatter( strDate, format ){
var theDate = new Date(strDate);
if( format=="time" )
return getTimeFromDate(theDate);
else{
var dateOptions = {year:'numeric', month:'long', day:'numeric'};
var formattedDate = theDate.toLocaleDateString("en-US", + dateOptions);
if( format=="date" )
return formattedDate;
return formattedDate + " " + getTimeFromDate(theDate);
}
}
function getTimeFromDate( theDate ){
var sec = theDate.getSeconds();
if( sec<10 )
sec = "0"+sec;
var min = theDate.getMinutes();
if( min<10 )
min = "0"+min;
return theDate.getHours() + ':'+ min + ':' + sec;
}
Diese Bibliothek kann das Datumsobjekt formatieren und die formatierte Zeichenfolge zurück zum Datumsobjekt analysieren. Es verwendet das Java-Format (SimpleDateFormat-Klasse). Der Name von Monaten und Tagen kann lokalisiert werden.
http://www.javascriptsource.com/repository/javascripts/2009/03/880961/JS_Simple_Date_Format.Zip
Beispiel:
var sdf = new JsSimpleDateFormat("dd-MMM-yyyy");
var formattedString = sdf.format(new Date());
var dateObject = sdf.parse("10-Aug-2010");
Hier ist ein fertiger Formatierungscode für Uhrzeit und Datum, der NICHT auf externen Modulen/Bibliotheken basiert oder jQuery oder ES7 oder etwas anderes verwendet. Anders als der Code in einigen anderen Antworten bietet dieser Code diese Kombination von Funktionen:
// format_date(date, pattern, utc)
// - date
// - a JavaScript Date object
// - use "new Date()" for current time
// - pattern
// - a string with embedded {codes} like
// "{year4}-{month02}-{day02}: {dayname3}"
// see format_date_funcs below for complete list
// - any other letters go through unchanged
// - utc
// - if true, shows date in UTC time "zone"
// - if false/omitted, shows date in local time zone
//
var month_names =
[
"January", "February", "March", "April", "May", "June", "July",
"August", "September", "October", "November", "December"
];
var day_of_week_names =
[
"Sunday", "Monday", "Tuesday",
"Wednesday", "Thursday", "Friday", "Saturday"
];
function space_pad2(num)
{
return num < 10 ? " " + num : num;
}
function zero_pad2(num)
{
return num < 10 ? "0" + num : num;
}
function space_pad3(num)
{
if (num < 10)
return " " + num;
else if (num < 100)
return " " + num;
else
return num;
}
function zero_pad3(num)
{
if (num < 10)
return "00" + num;
else if (num < 100)
return "0" + num;
else
return num;
}
var format_date_funcs =
{
// {year4} = '1902'
// {year02} = '02'
//
'year4': function(date, utc)
{
var year = utc ? date.getUTCFullYear() : date.getFullYear();
return year;
},
'year02': function(date, utc)
{
var year = utc ? date.getUTCFullYear() : date.getFullYear();
return year.toString().substr(2,2);
},
// {month} = '1' - '12'
// {month2} = ' 1' - '12' (space padded)
// {month02} = '01' - '12'
//
'month': function(date, utc)
{
var month = utc ? date.getUTCMonth() : date.getMonth(); // [0,11]
return month + 1;
},
'month2': function(date, utc)
{
var month = utc ? date.getUTCMonth() : date.getMonth(); // [0,11]
return space_pad2(month + 1);
},
'month02': function(date, utc)
{
var month = utc ? date.getUTCMonth() : date.getMonth(); // [0,11]
return zero_pad2(month + 1);
},
// {monthname} = 'January'
// {monthname3} = 'Jan'
//
'monthname': function(date, utc)
{
var month = utc ? date.getUTCMonth() : date.getMonth(); // [0,11]
return month_names[month];
},
'monthname3': function(date, utc)
{
var month = utc ? date.getUTCMonth() : date.getMonth(); // [0,11]
return month_names[month].substr(0, 3);
},
// {day} = '1' - '31'
// {day2} = ' 1' - '31' (space padded)
// {day02} = '01' - '31'
//
'day': function(date, utc)
{
var date = utc ? date.getUTCDate() : date.getDate(); // [1,31]
return date;
},
'day2': function(date, utc)
{
var date = utc ? date.getUTCDate() : date.getDate(); // [1,31]
return space_pad2(date);
},
'day02': function(date, utc)
{
var date = utc ? date.getUTCDate() : date.getDate(); // [1,31]
return zero_pad2(date);
},
// {dayname} = 'Tuesday'
// {dayname3} = 'Tue'
//
'dayname': function(date, utc)
{
var day = utc ? date.getUTCDay() : date.getDay(); // [0,6]
return day_of_week_names[day];
},
'dayname3': function(date, utc)
{
var day = utc ? date.getUTCDay() : date.getDay(); // [0,6]
return day_of_week_names[day].substr(0,3);
},
// {24hour} = '0' - '23'
// {24hour2} = ' 0' - '23' (space padded)
// {24hour02} = '00' - '23'
//
'24hour': function(date, utc)
{
var hour = utc ? date.getUTCHours() : date.getHours(); // [0,23]
return hour;
},
'24hour2': function(date, utc)
{
var hour = utc ? date.getUTCHours() : date.getHours(); // [0,23]
return space_pad2(hour);
},
'24hour02': function(date, utc)
{
var hour = utc ? date.getUTCHours() : date.getHours(); // [0,23]
return zero_pad2(hour);
},
// {12hour} = '1' - '12'
// {12hour2} = ' 1' - '12' (space padded)
// {12hour02} = '01' - '12'
// {ampm} = 'am' or 'pm'
// {AMPM} = 'AM' or 'PM'
//
'12hour': function(date, utc)
{
var hour = utc ? date.getUTCHours() : date.getHours(); // [0,23]
hour = hour % 12; // [0,11]
if (0 === hour) hour = 12;
return hour;
},
'12hour2': function(date, utc)
{
var hour = utc ? date.getUTCHours() : date.getHours(); // [0,23]
hour = hour % 12; // [0,11]
if (0 === hour) hour = 12;
return space_pad2(hour);
},
'12hour02': function(date, utc)
{
var hour = utc ? date.getUTCHours() : date.getHours(); // [0,23]
hour = hour % 12; // [0,11]
if (0 === hour) hour = 12;
return zero_pad2(hour);
},
'ampm': function(date, utc)
{
var hour = utc ? date.getUTCHours() : date.getHours(); // [0,23]
return (hour < 12 ? 'am' : 'pm');
},
'AMPM': function(date, utc)
{
var hour = utc ? date.getUTCHours() : date.getHours(); // [0,23]
return (hour < 12 ? 'AM' : 'PM');
},
// {minute} = '0' - '59'
// {minute2} = ' 0' - '59' (space padded)
// {minute02} = '00' - '59'
//
'minute': function(date, utc)
{
var minute = utc ? date.getUTCMinutes() : date.getMinutes(); // [0,59]
return minute;
},
'minute2': function(date, utc)
{
var minute = utc ? date.getUTCMinutes() : date.getMinutes(); // [0,59]
return space_pad2(minute);
},
'minute02': function(date, utc)
{
var minute = utc ? date.getUTCMinutes() : date.getMinutes(); // [0,59]
return zero_pad2(minute);
},
// {second} = '0' - '59'
// {second2} = ' 0' - '59' (space padded)
// {second02} = '00' - '59'
//
'second': function(date, utc)
{
var second = utc ? date.getUTCSeconds() : date.getSeconds(); // [0,59]
return second;
},
'second2': function(date, utc)
{
var second = utc ? date.getUTCSeconds() : date.getSeconds(); // [0,59]
return space_pad2(second);
},
'second02': function(date, utc)
{
var second = utc ? date.getUTCSeconds() : date.getSeconds(); // [0,59]
return zero_pad2(second);
},
// {msec} = '0' - '999'
// {msec3} = ' 0' - '999' (space padded)
// {msec03} = '000' - '999'
//
'msec': function(date, utc)
{
var msec =
utc ? date.getUTCMilliseconds() : date.getMilliseconds(); // [0,999]
return msec;
},
'msec3': function(date, utc)
{
var msec =
utc ? date.getUTCMilliseconds() : date.getMilliseconds(); // [0,999]
return space_pad3(msec);
},
'msec03': function(date, utc)
{
var msec =
utc ? date.getUTCMilliseconds() : date.getMilliseconds(); // [0,999]
return zero_pad3(msec);
},
// {open} = '{' (in case you actually want '{' in the output)
//
'open': function(date, utc)
{
return '{';
},
// {close} = '}' (in case you actually want '}' in the output)
//
'close': function(date, utc)
{
return '}';
},
};
function format_date(date, pattern, utc)
{
if (!pattern)
{
pattern = '{month}/{day}/{year4}';
}
var ret = '';
while (pattern.length > 0)
{
var s = pattern.indexOf('{');
var e = pattern.indexOf('}');
//console.log('s ' + s + ' e ' + e);
if (-1 !== s && -1 !== e && s < e)
{
// - there is a well-formed {foo} in range [s,e]
// - first we emit range [0,s) as literal
}
else
{
// - rest of string has no {} or has malformed }{ or { or }
// - just emit the rest of the string as literal and be done
s = pattern.length;
}
// emit range [0,s) as literal
if (s > 0)
{
ret += pattern.substr(0, s);
pattern = pattern.substr(s);
e -= s;
s = 0;
}
if (0 === pattern.length) break;
// emit range [s=0,e] by evaluating code
console.assert(0 === s); // position of {
console.assert(e > 0); // position of }
console.assert('{' === pattern.substr(s, 1));
console.assert('}' === pattern.substr(e, 1));
var code = pattern.substr(1,e-1);
var func = format_date_funcs[code];
console.assert(func);
ret += func(date, utc);
pattern = pattern.substr(e+1);
}
return ret;
}
if (1) // test format_date
{
var fmt = '[';
for (var func in format_date_funcs)
{
if (!format_date_funcs.hasOwnProperty(func)) continue;
fmt += '{' + func + '}/';
}
fmt += ']';
var now = new Date();
console.log(fmt);
console.log(format_date(now, fmt, false /*utc*/));
console.log(format_date(now, fmt, true /*utc*/));
}
Sie benötigen keine Bibliotheken, extrahieren Sie einfach Datumskomponenten und konstruieren Sie den String. So erhalten Sie das YYYY-MM-DD
-Format. Beachten Sie auch den Monatsindex "Januar ist 0, Februar ist 1 usw.".
// @flow
type Components = {
day: number,
month: number,
year: number
}
export default class DateFormatter {
// YYYY-MM-DD
static YYYY_MM_DD = (date: Date): string => {
const components = DateFormatter.format(DateFormatter.components(date))
return `${components.year}-${components.month}-${components.day}`
}
static format = (components: Components) => {
return {
day: `${components.day}`.padStart(2, '0'),
month: `${components.month}`.padStart(2, '0'),
year: components.year
}
}
static components = (date: Date) => {
return {
day: date.getDate(),
month: date.getMonth() + 1,
year: date.getFullYear()
}
}
}
Benutzen:
thisDate = new Date(parseInt(jsonDateString.replace('/Date(', '')));
formattedDate = (thisDate.getMonth() + 1) + "/" + (thisDate.getDate()+1) + "/" + thisDate.getFullYear();
Dies erfordert ein JSON date, "/ Date (1429573751663) /" und erzeugt als formatierten String:
"21.04.2015"