Wie erhalte ich Jahr / Monat / Tag von einem Datumsobjekt?

239

alert(dateObj) gibt Wed Dec 30 2009 00:00:00 GMT+0800

Wie bekomme ich ein Datum im Format 2009/12/30?

user198729
quelle
2
Sie wollten UTC Datum und Uhrzeit?
DOK

Antworten:

406
var dateObj = new Date();
var month = dateObj.getUTCMonth() + 1; //months from 1-12
var day = dateObj.getUTCDate();
var year = dateObj.getUTCFullYear();

newdate = year + "/" + month + "/" + day;

oder Sie können ein neues Datum einstellen und die oben genannten Werte angeben

Hiyasat
quelle
69
Denken Sie daran: Januar = 0, Februar = 1 und so weiter.
Rubens Farias
9
Was ist der Unterschied zwischen getMonthund getUTCMonth?
user198729
10
UTC gibt die Weltzeit zurück. Wenn Sie Ortszeit möchten, verwenden Sie getMonth
Hiyasat
54
getUTCDay()sollte ersetzt werden durch getUTCDate(), da Tag die Nummer des Wochentags (0-6) und Datum die Nummer des Tages im Monat (1-31) ist.
Grzegorz Oledzki
4
Ich glaube, diese Antwort ist immer noch fehlerhaft. getUTCDate () gibt zwar den Tag des Monats zurück, aber in England. Zum Beispiel, wenn ich Folgendes eingebe: var d = neues Datum ("21. Juli 1983, 01:15:00"); d.getDate () gibt 21 zurück, aber d.getUTCDate () gibt nur 20 zurück. Dies liegt daran, dass es in Frankreich (wo ich bin) um 01:15 Uhr morgens in England immer noch 23:15 Uhr ist. Um den Tag zu erhalten, der im ursprünglichen Datum war, sollten Sie getDate () verwenden.
Pascal Ganaye
101
var dt = new Date();

dt.getFullYear() + "/" + (dt.getMonth() + 1) + "/" + dt.getDate();

Da der Monatsindex auf 0 basiert, müssen Sie ihn um 1 erhöhen.

Bearbeiten

Eine vollständige Liste der Datumsobjektfunktionen finden Sie unter

Datum

getMonth()

Gibt den Monat (0-11) am angegebenen Datum gemäß der Ortszeit zurück.

getUTCMonth()

Gibt den Monat (0-11) am angegebenen Datum gemäß der Weltzeit zurück.

rahul
quelle
5
Benötigt Eltern. Andernfalls wird der Oktober als Monat 91 angezeigt (da 9 + 1 = 91 im Stringland)
Rob
5
Sollte dt.getFullYear () + "/" + (dt.getMonth () + 1) + "/" + dt.getDate () sein;
Paulius Uza
90
new Date().toISOString()
"2016-02-18T23:59:48.039Z"
new Date().toISOString().split('T')[0];
"2016-02-18"
new Date().toISOString().replace('-', '/').split('T')[0].replace('-', '/');
"2016/02/18"

new Date().toLocaleString().split(',')[0]
"2/18/2016"
Davidcondrey
quelle
2
Ich denke, dies könnte besser sein für den dritten Fall new Date (). ToISOString (). Split ('T') [0] .replace (/ - / g, '/');
Mohamed Hesham
28

Ich würde Ihnen empfehlen, Moment.js http://momentjs.com/ zu verwenden.

Dann können Sie tun:

moment(new Date()).format("YYYY/MM/DD");

Hinweis: Sie müssen nicht wirklich hinzufügen, new Date()wenn Sie das aktuelle TimeDate möchten. Ich habe es nur als Referenz hinzugefügt, damit Sie ihm ein Datumsobjekt übergeben können. Für das aktuelle TimeDate funktioniert dies auch:

moment().format("YYYY/MM/DD");
fmsf
quelle
1
Diese Antwort ist gut, wenn Sie eine Abhängigkeit hinzufügen möchten - und wenn ja, ab 2019 ist day.js eine leichtere Alternative zu moment.js als Option - github.com/iamkun/dayjs . Ebenfalls erwähnt gibt es Luxon und Date-Fns.
BradGreens
18

die Info

Wenn ein zweistelliger Monat und ein Datum gewünscht werden (01.01.2016 vs. 01.01.2016)

Code

var dateObj = new Date();
var month = ('0' + (dateObj.getMonth() + 1)).slice(-2);
var date = ('0' + dateObj.getDate()).slice(-2);
var year = dateObj.getFullYear();
var shortDate = year + '/' + month + '/' + date;
alert(shortDate);

Ausgabe

06.10.2016

Geige

https://jsfiddle.net/Hastig/1xuu7z7h/

Anerkennung

Weitere Informationen von und Gutschrift zu dieser Antwort

Mehr

Um mehr über .sliceden Try-it-yourself-Editor von w3schools zu erfahren, habe ich besser verstanden, wie man ihn verwendet.

Hastig Zusammenstellen
quelle
Aber wenn das Datum auf Dezember eingestellt ist, wird es nicht auf Januar nächsten Jahres weitergeleitet?
Hanz Cheah
13

Verwenden Sie die Date get-Methoden.

http://www.tizag.com/javascriptT/javascriptdate.php

http://www.htmlgoodies.com/beyond/javascript/article.php/3470841

var dateobj= new Date() ;
var month = dateobj.getMonth() + 1;
var day = dateobj.getDate() ;
var year = dateobj.getFullYear();
Aseem Gautam
quelle
4
Monate in JavaScript Datumsobjekte sind nullindiziert. Stellen Sie sicher, dass Sie 1 hinzufügen, sonst wird Dezember November; November wird Oktober und so weiter
Cllpse
1
@Aseem Sollte nur der Monat sein, der die +1 benötigt
Hastig Zusammenstellen
12
var date = new Date().toLocaleDateString()
"12/30/2009"
Aldokkani
quelle
2
Um 2 Daten zu vergleichen, ist diese Antwort top. Vielen Dank!
Dazag
9

EUROPA (ENGLISCH / SPANISCH) FORMAT Wenn
Sie den aktuellen Tag benötigen, können Sie diesen verwenden.

function getFormattedDate(today) 
{
    var week = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
    var day  = week[today.getDay()];
    var dd   = today.getDate();
    var mm   = today.getMonth()+1; //January is 0!
    var yyyy = today.getFullYear();
    var hour = today.getHours();
    var minu = today.getMinutes();

    if(dd<10)  { dd='0'+dd } 
    if(mm<10)  { mm='0'+mm } 
    if(minu<10){ minu='0'+minu } 

    return day+' - '+dd+'/'+mm+'/'+yyyy+' '+hour+':'+minu;
}

var date = new Date();
var text = getFormattedDate(date);


* Für das spanische Format übersetzen Sie einfach die WEEK-Variable.

var week = new Array('Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado');


Ausgabe: Montag - 16.11.2015 14:24

Philip Enc
quelle
6

Mit der akzeptierten Antwort würde der 1. Januar folgendermaßen angezeigt : 2017/1/1.

Wenn Sie es vorziehen 2017/01/01, können Sie verwenden:

var dt = new Date();
var date = dt.getFullYear() + '/' + (((dt.getMonth() + 1) < 10) ? '0' : '') + (dt.getMonth() + 1) + '/' + ((dt.getDate() < 10) ? '0' : '') + dt.getDate();
Basj
quelle
5

Warum nicht einfach?

dateObj.toISOString().slice(0, 10) // YYYY-MM-DD

Überprüfe hier:

const date1 = new Date('December 17, 1995 03:24:00');
console.log(date1.toISOString().slice(0, 10))

João Pimentel Ferreira
quelle
2

Hier ist ein sauberer Weg, um Jahr / Monat / Tag mit Vorlagenliteralen zu erhalten:

var date = new Date();
var formattedDate = `${date.getFullYear()}/${(date.getMonth() + 1)}/${date.getDate()}`;
console.log(formattedDate);

ExillustX
quelle
2
let dateObj = new Date();

let myDate = (dateObj.getUTCFullYear()) + "/" + (dateObj.getMonth() + 1)+ "/" + (dateObj.getUTCDate());

Als Referenz können Sie die folgenden Details sehen

new Date().getDate()          // Return the day as a number (1-31)
new Date().getDay()           // Return the weekday as a number (0-6)
new Date().getFullYear()      // Return the four digit year (yyyy)
new Date().getHours()         // Return the hour (0-23)
new Date().getMilliseconds()  // Return the milliseconds (0-999)
new Date().getMinutes()       // Return the minutes (0-59)
new Date().getMonth()         // Return the month (0-11)
new Date().getSeconds()       // Return the seconds (0-59)
new Date().getTime()          // Return the time (milliseconds since January 1, 1970)

let dateObj = new Date();

let myDate = (dateObj.getUTCFullYear()) + "/" + (dateObj.getMonth() + 1)+ "/" + (dateObj.getUTCDate());

console.log(myDate)

// Rückgabe der Minuten (0-59) neues Datum (). GetMonth () // Rückgabe des Monats (0-11) neues Datum (). GetSeconds () // Rückgabe der Sekunden (0-59) neues Datum () .getTime () // Zeit zurückgeben (Millisekunden seit dem 1. Januar 1970)

Srikrushna
quelle
1

Sie können einfach diesen einzeiligen Code verwenden, um das Datum im Format Jahr-Monat-Datum abzurufen

var date = new Date().getFullYear() + "-" + new Date().getMonth() + 1 + "-" + new Date().getDate();
Muhammad Ahsan
quelle
-1

Ich benutze dies, was funktioniert, wenn Sie ein Datum obj oder js Zeitstempel übergeben:

getHumanReadableDate: function(date) {
    if (date instanceof Date) {
         return date.getDate() + "/" + (date.getMonth() + 1) + "/" + date.getFullYear();
    } else if (isFinite(date)) {//timestamp
        var d = new Date();
        d.setTime(date);
        return this.getHumanReadableDate(d);
    }
}
Alex Toader
quelle
-1

Mit ES2018 wurden Regex-Erfassungsgruppen eingeführt, mit denen Sie Tag, Monat und Jahr erfassen können:

const REGEX = /(?<year>[0-9]{4})-(?<month>[0-9]{2})-(?<day>[0-9]{2});
const results = REGEX.exec('2018-07-12');
console.log(results.groups.year);
console.log(results.groups.month);
console.log(results.groups.day);

Der Vorteil dieses Ansatzes besteht darin, dass Tag, Monat und Jahr für nicht standardmäßige String-Datumsformate erfasst werden können.

Ref. https://www.freecodecamp.org/news/es9-javascripts-state-of-art-in-2018-9a350643f29c/

Przemek Struciński
quelle
Die Frage bezog sich speziell auf das Formatieren eines Datums in "Monat / Tag / Jahr" aus einem Datumsobjekt. Erfassungsgruppen in Regex sind hier nicht anwendbar.
Colin