Wie bekomme ich datetime in JavaScript?


Antworten:


155

Semantisch suchen Sie wahrscheinlich nach dem Einzeiler

new Date().toLocaleString()

Hiermit wird das Datum im Gebietsschema des Benutzers formatiert.

Wenn Sie wirklich nach einer bestimmten Möglichkeit suchen, Datumsangaben zu formatieren, empfehle ich die Bibliothek moment.js .


3
Vielen Dank, dass Sie die Bibliothek moment.js empfohlen haben. es ist fantastisch.
carbontwelve

3
Niemand sollte seinen eigenen Datums- / Zeitcode schreiben (wie in einigen anderen Antworten). Die Anzahl der Eckfälle ist erstaunlich. Schauen Sie auf der Unit-Test-Seite nach moment.js ( momentjs.com/tests ) - es gibt 66701-Tests! Benutze es einfach, es ist großartig. Oder suchen Sie eine andere Bibliothek, aber schreiben Sie keinen eigenen Code dafür, Sie werden höchstwahrscheinlich etwas verpassen (ich habe dies in der Vergangenheit königlich durcheinander gebracht).
Sidewinderguy

1
Ich verstehe nicht, warum es so schwierig war, eine einzeilige Antwort wie diese zu finden, die funktioniert. Vielen Dank.
Timhc22

46

Wenn das Format "fest" ist, was bedeutet, dass Sie kein anderes Format verwenden müssen, können Sie reines JavaScript verwenden, anstatt die gesamte Bibliothek zum Formatieren des Datums zu verwenden:

//Pad given value to the left with "0"
function AddZero(num) {
    return (num >= 0 && num < 10) ? "0" + num : num + "";
}

window.onload = function() {
    var now = new Date();
    var strDateTime = [[AddZero(now.getDate()), 
        AddZero(now.getMonth() + 1), 
        now.getFullYear()].join("/"), 
        [AddZero(now.getHours()), 
        AddZero(now.getMinutes())].join(":"), 
        now.getHours() >= 12 ? "PM" : "AM"].join(" ");
    document.getElementById("Console").innerHTML = "Now: " + strDateTime;
};
<div id="Console"></div>

Die Variable enthält strDateTimedas Datum und die Uhrzeit in dem von Ihnen gewünschten Format, und Sie sollten es bei Bedarf ziemlich einfach anpassen können.

Ich verwende joinals gute Praxis nichts weiter, es ist besser als das Hinzufügen von Zeichenfolgen.


@Jens yep, es ist ungefähr so ​​Standard wie möglich, kaum zu glauben, dass ein Browser eine andere Syntax für die grundlegenden Datums- / Zeitmethoden hat. :)
Schatten-Assistent ist Ohr für Sie

2
Tolle Lösung, auch für das verwendete Format. Tauschen Sie einfach die Anweisungen AddZero (now.getDate ()) und AddZero (now.getMonth () + 1) aus und passen Sie die Stunden auf 12 an, wenn 0, und -12, wenn> 12. Viel Glück und danke für die Lösung
Gent

Ihr Code sollte 14.45 Uhr statt 14.45 Uhr zurückgeben. Also habe ich Ihren Code ein wenig geändert: function getNowDateTimeStr () {var now = new Date (); var hour = now.getHours () - (now.getHours ()> = 12? 12: 0); return [[AddZero (now.getDate ()), AddZero (now.getMonth () + 1), now.getFullYear ()]. ​​join ("/"), [AddZero (Stunde), AddZero (now.getMinutes () )]. join (":"), now.getHours ()> = 12? "PM": "AM"]. Join (""); } // Den angegebenen Wert links mit der Funktion "0" auffüllen AddZero (num) {return (num> = 0 && num <10)? "0" + num: num + ""; }
Dalmate


9

Date().toLocaleString() gibt dies zurück: 7/31/2018, 12:58:03 PM

Ziemlich nah dran - lassen Sie einfach das Komma und die Sekunden fallen:

new Date().toLocaleString().replace(",","").replace(/:.. /," ");

Ergebnisse: 7/31/2018 12:58 PM


5
function pad_2(number)
{
     return (number < 10 ? '0' : '') + number;
}

function hours(date)
{
    var hours = date.getHours();
    if(hours > 12)
        return hours - 12; // Substract 12 hours when 13:00 and more
    return hours;
}

function am_pm(date)
{
    if(date.getHours()==0 && date.getMinutes()==0 && date.getSeconds()==0)
        return ''; // No AM for MidNight
    if(date.getHours()==12 && date.getMinutes()==0 && date.getSeconds()==0)
        return ''; // No PM for Noon
    if(date.getHours()<12)
        return ' AM';
    return ' PM';
}

function date_format(date)
{
     return pad_2(date.getDate()) + '/' +
            pad_2(date.getMonth()+1) + '/' +
            (date.getFullYear() + ' ').substring(2) +
            pad_2(hours(date)) + ':' +
            pad_2(date.getMinutes()) +
            am_pm(date);
}

Code korrigiert ab 3. September 12 um 10:11 Uhr


Überprüfe deine Arbeit. Ich habe es versucht und "03/06/112 05:02 PM" als Ausgabe erhalten. Das einzig Richtige ist die Zeit. Datum, Monat und (offensichtlich) Jahr sind alle falsch.
Muhd

5

Sie können das Datum mit dem unten hinzugefügten Snippet in fast jedes Format konvertieren .

Code:

dateFormat(new Date(),"dd/mm/yy h:MM TT")
//"20/06/14 6:49 PM"

Andere Beispiele

// Can also be used as a standalone function
dateFormat(new Date(), "dddd, mmmm dS, yyyy, h:MM:ss TT");
// Saturday, June 9th, 2007, 5:46:21 PM

dateFormat(new Date(),"dddd d mmmm yyyy")
//Monday 2 June 2014"

Snippet :

Fügen Sie den folgenden Code aus diesem Link in Ihren Code ein.

var dateFormat = function () {
    var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,
        timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
        timezoneClip = /[^-+\dA-Z]/g,
        pad = function (val, len) {
            val = String(val);
            len = len || 2;
            while (val.length < len) val = "0" + val;
            return val;
        };

    // Regexes and supporting functions are cached through closure
    return function (date, mask, utc) {
        var dF = dateFormat;

        // You can't provide utc if you skip other args (use the "UTC:" mask prefix)
        if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) {
            mask = date;
            date = undefined;
        }

        // Passing date through Date applies Date.parse, if necessary
        date = date ? new Date(date) : new Date;
        if (isNaN(date)) throw SyntaxError("invalid date");

        mask = String(dF.masks[mask] || mask || dF.masks["default"]);

        // Allow setting the utc argument via the mask
        if (mask.slice(0, 4) == "UTC:") {
            mask = mask.slice(4);
            utc = true;
        }

        var _ = utc ? "getUTC" : "get",
            d = date[_ + "Date"](),
            D = date[_ + "Day"](),
            m = date[_ + "Month"](),
            y = date[_ + "FullYear"](),
            H = date[_ + "Hours"](),
            M = date[_ + "Minutes"](),
            s = date[_ + "Seconds"](),
            L = date[_ + "Milliseconds"](),
            o = utc ? 0 : date.getTimezoneOffset(),
            flags = {
                d:    d,
                dd:   pad(d),
                ddd:  dF.i18n.dayNames[D],
                dddd: dF.i18n.dayNames[D + 7],
                m:    m + 1,
                mm:   pad(m + 1),
                mmm:  dF.i18n.monthNames[m],
                mmmm: dF.i18n.monthNames[m + 12],
                yy:   String(y).slice(2),
                yyyy: y,
                h:    H % 12 || 12,
                hh:   pad(H % 12 || 12),
                H:    H,
                HH:   pad(H),
                M:    M,
                MM:   pad(M),
                s:    s,
                ss:   pad(s),
                l:    pad(L, 3),
                L:    pad(L > 99 ? Math.round(L / 10) : L),
                t:    H < 12 ? "a"  : "p",
                tt:   H < 12 ? "am" : "pm",
                T:    H < 12 ? "A"  : "P",
                TT:   H < 12 ? "AM" : "PM",
                Z:    utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""),
                o:    (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),
                S:    ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10]
            };

        return mask.replace(token, function ($0) {
            return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
        });
    };
}();

// Some common format strings
dateFormat.masks = {
    "default":      "ddd mmm dd yyyy HH:MM:ss",
    shortDate:      "m/d/yy",
    mediumDate:     "mmm d, yyyy",
    longDate:       "mmmm d, yyyy",
    fullDate:       "dddd, mmmm d, yyyy",
    shortTime:      "h:MM TT",
    mediumTime:     "h:MM:ss TT",
    longTime:       "h:MM:ss TT Z",
    isoDate:        "yyyy-mm-dd",
    isoTime:        "HH:MM:ss",
    isoDateTime:    "yyyy-mm-dd'T'HH:MM:ss",
    isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"
};

// Internationalization strings
dateFormat.i18n = {
    dayNames: [
        "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
        "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
    ],
    monthNames: [
        "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
        "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
    ]
};

// For convenience...
Date.prototype.format = function (mask, utc) {
    return dateFormat(this, mask, utc);
};

1

Der Code des @ Shadow-Assistenten sollte 14:45 Uhr statt 14:45 Uhr zurückgeben. Also habe ich seinen Code ein bisschen geändert:

function getNowDateTimeStr(){
 var now = new Date();
 var hour = now.getHours() - (now.getHours() >= 12 ? 12 : 0);
return [[AddZero(now.getDate()), AddZero(now.getMonth() + 1), now.getFullYear()].join("/"), [AddZero(hour), AddZero(now.getMinutes())].join(":"), now.getHours() >= 12 ? "PM" : "AM"].join(" ");
}

//Pad given value to the left with "0"
function AddZero(num) {
    return (num >= 0 && num < 10) ? "0" + num : num + "";
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.