JavaScript'te datetime nasıl edinilir?


Yanıtlar:


155

Anlamsal olarak, muhtemelen tek astarı arıyorsunuz

new Date().toLocaleString()

tarih, kullanıcının yerel ayarında biçimlendirilir.

Tarihleri ​​biçimlendirmek için gerçekten belirli bir yol arıyorsanız, moment.js kütüphanesini öneriyorum .


3
Moment.js kütüphanesini önerdiğiniz için teşekkür ederiz; o fantastik.
carbontwelve

3
Hiç kimse kendi tarih / saat kodunu yazmamalıdır (diğer cevapların bazılarında olduğu gibi). Köşe vakalarının sayısı şaşırtıcı. Moment.js ( momentjs.com/tests ) için birim test sayfasına bakın - 66701 test var! Sadece kullan, harika. Ya da başka bir kütüphane bulun, ancak bunun için kendi kodunuzu yazmayın, muhtemelen bir şeyleri özleyeceksiniz (bunu geçmişte kraliyetle karıştırdım).
sidewinderguy

1
Bu şekilde çalışan tek satırlık bir cevap bulmanın neden bu kadar zor olduğunu anlamıyorum. Teşekkürler.
timhc22

46

Biçim "sabit" ise, başka bir biçim kullanmanız gerekmediği anlamına gelirse, tarihi biçimlendirmek için tüm kitaplığı kullanmak yerine saf JavaScript'e sahip olabilirsiniz:

//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>

Değişken strDateTime, tarih / saati istediğiniz biçimde tutacaktır ve ihtiyacınız olduğunda kolayca değiştirebilmeniz gerekir.

joinİyi uygulama olarak kullanıyorum , başka bir şey değil, birlikte dizeler eklemekten daha iyi.


@Jens evet, mümkün olduğu kadar standart, herhangi bir tarayıcının temel tarih / saat yöntemleri için farklı sözdizimine sahip olacağına inanmak zor. :)
Gölge Sihirbazı Senin

2
harika bir çözüm, ayrıca kullanım formatı için AddZero (now.getDate ()) ve AddZero (now.getMonth () + 1) ifadelerini değiştirin ve saatler, 0 ise 12 ve> 12 ise -12 olmalıdır. İyi şanslar ve çözüm için teşekkürler
Gent

kodunuz 14:45 yerine 02:45 PM döndürmelidir. Kodunuzu biraz değiştirdim: function getNowDateTimeStr () {var now = new Date (); var hour = now.getHours () - (now.getHours ()> = 12? 12: 0); dönüş [[AddZero (now.getDate ()), AddZero (now.getMonth () + 1), now.getFullYear ()]. ​​join ("/"), [AddZero (saat), AddZero (now.getMinutes () )]. join (":"), now.getHours ()> = 12? "PM": "AM"]. Join (""); } // Verilen değeri "0" fonksiyonuyla sola kaydırın AddZero (num) {return (num> = 0 && num <10)? "0" + num: num + ""; }
dalmat


9

Date().toLocaleString() bunu döndürür: 7/31/2018, 12:58:03 PM

Oldukça yakın - virgül ve saniyeler bırakın:

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

Sonuçlar: 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);
}

Kod, 3 Eylül 12, 10:11 itibarıyla düzeltildi


İşini kontrol et. Bunu denedim ve çıktı olarak "03/06/112 05:02 PM" var. Orada doğru olan tek şey zaman. Tarih, ay ve (tabii ki) yıl yanlış.
Muhd

5

Aşağıya eklediğim Snippet'i kullanarak Date'i hemen hemen her formata dönüştürebilirsiniz .

Kod:

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

Diğer örnekler

// 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 :

Bu bağlantıdan alınan aşağıdaki kodu kodunuza ekleyin .

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

@ Gölge Sihirbazı'nın kodu 14:45 yerine 02:45 PM döndürmelidir. Bu yüzden kodunu biraz değiştirdim:

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 + "";
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.