it-swarm.com.de

So formatieren Sie ein JavaScript-Datum

Wie kann ich ein JavaScript-Datumsobjekt zum Drucken als 10-Aug-2010 formatieren?

1546
leora

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.

968
Marko

Verwenden Sie 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.

Die Werte, die Sie in Optionen für verschiedene Schlüssel übergeben können:

  1. Tag: 
    .__ Die Darstellung des Tages. 
    Mögliche Werte sind "numerisch", "zweistellig".
  2. Wochentag: 
    .__ Die Darstellung des Wochentags. 
    Mögliche Werte sind "schmal", "kurz", "lang".
  3. Jahr: 
    .__ Die Darstellung des Jahres. 
    Mögliche Werte sind "numerisch", "zweistellig".
  4. Monat: 
    .__ Die Darstellung des Monats. 
    Mögliche Werte sind "numerisch", "2-stellig", "schmal", "kurz", "lang".
  5. Stunde: 
    .__ Die Darstellung der Stunde. 
    Mögliche Werte sind "numerisch", "zweistellig".
  6. Minute: Die Darstellung der Minute. 
    Mögliche Werte sind "numerisch", "2-stellig".
  7. zweite: 
    .__ Die Darstellung der zweiten. 
    Mögliche Werte sind "numerisch", 2-stellig ".

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.

Für verschiedene Sprachen:

  1. "en-US": Für Englisch
  2. "hi-IN": Für Hindi
  3. "ja-JP": Für Japanisch

Sie können mehr Sprachoptionen verwenden.

Zum Beispiel

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

Verweise:

1346
ajeet kanojia

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 

Datumsformat bei npm

http://jsfiddle.net/phZr7/1/

549
RobertPitt

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
391
sebastian.i

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.

325
simo

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 .

164
Dmitry Pavlov

Benutzerdefinierte Formatierungsfunktion:

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.

Standard-ECMAScript-Formatierungsfunktionen:

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

157
Adrian Maire

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:

117
Sébastien

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
96
Mite Mitreski

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 .

86
John Slegers

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/

49
NiKo

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.

33
JD Smith

@ 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

32
user956584

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

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.

21
lewdev

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
 * 
 ************************************/
17
jmiraglia

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

Viele andere Beispiele für das Formatierungsdatum finden Sie in der Dokumentation zur jQuery-Benutzeroberfläche .

15
webzy

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>
14
Vijay Maheriya

new Date().toLocaleDateString()

// "3/21/2018"

Weitere Dokumentation unter developer.mozilla.org

13
Kirk Strobeck

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)
13
Prasad DLV

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

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.

Online prüfen

Mehr Details

11
Iman Bahrampour

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 .

11
Alireza
var today = new Date();
var formattedToday = today.toLocaleDateString() + ' ' + today.toLocaleTimeString();
8
zest

Hallo, prüfe, ob das bei deinem Problem hilft.

var d = new Date();

var options = {   
    day: 'numeric',
    month: 'long', 
    year: 'numeric'
};

console.log(d.toLocaleDateString('en-ZA', options));

 Date to locate format

7
Mr Nsubuga

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

7
Hinrich

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}')
7
hasen

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

4
amit77309

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>

4
Arjun Nayak

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
3
Gene R

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];
3
Dave

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());
 }
3
Dave

Fügen Sie Ihrer Seite das jQuery UI plugin hinzu:

function DateFormate(dateFormate, datetime) {
    return $.datepicker.formatDate(dateFormate, datetime);
};
3
Thulasiram

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)
2
SaidB

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"));
2
Tony Brix

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;
    }
}
2
Matias Osmerini

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"
2
Peter

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

2
Basj

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

1
Combine

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.

1
Agi Hammerthief

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('-')})
1
JP de la Torre

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



1
Ron Royston

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'
0

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 .

0
site

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

0
blairzotron

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");
0
John

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:

  • als Eingabe wird ein JavaScript-Datumsobjekt verwendet
  • das Datum kann als lokale Zeitzone oder UTC angezeigt werden
  • es verwendet ein einfaches Formatierungssystem "{year4} {month02} {second}", das auch nach dem Schreiben des Codes leicht zu lesen und zu verstehen ist, im Gegensatz zu dem typischen "% D% m% -", das Sie immer wieder zur Dokumentation zwingt
  • das Formatierungssystem weist keine seltsamen Selbstkollisionen auf, wie dies bei einigen Ad-hoc-Systemen mit der Bezeichnung "TT MM JJJJ" der Fall ist
  • sie können den Test hier ausführen und ausprobieren
// 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*/));
}
0
Louis Semprini

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()
    }
  }
}
0
onmyway133

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"

0
pat capozzi