Jak uzyskać rok / miesiąc / dzień z obiektu daty?

239

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

Jak uzyskać datę w formacie 2009/12/30?

użytkownik198729
źródło
2
Chcesz datę i godzinę UTC?
DOK

Odpowiedzi:

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

lub możesz ustawić nową datę i podać powyższe wartości

Cześć
źródło
69
Pamiętaj tylko: styczeń = 0, luty = 1 i tak dalej.
Rubens Farias
9
Jaka jest różnica między getMonthi getUTCMonth?
user198729,
10
UTC zwróci czas uniwersalny. jeśli chcesz czas lokalny, użyj getMonth
Hiyasat
54
getUTCDay()należy zastąpić getUTCDate(), ponieważ dzień to numer dnia w tygodniu (0–6), a data to numer dnia w miesiącu (1-31).
Grzegorz Oledzki
4
Ta odpowiedź jest nadal błędna. getUTCDate () zwróci Dzień miesiąca, ale w Anglii. Na przykład, jeśli wpiszesz: var d = nowa data („21 lipca 1983 01:15:00”); d.getDate () zwraca 21, ale d.getUTCDate () zwraca tylko 20 Jest tak, ponieważ o 01:15 rano we Francji (gdzie ja jestem), w Anglii jest 23:15. Aby uzyskać dzień, który był w pierwotnej dacie, należy użyć getDate ().
Pascal Ganaye,
101
var dt = new Date();

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

Ponieważ indeks miesiąca wynosi 0, należy go zwiększyć o 1.

Edytować

Aby uzyskać pełną listę funkcji obiektów daty, zobacz

Data

getMonth()

Zwraca miesiąc (0-11) w określonej dacie zgodnie z czasem lokalnym.

getUTCMonth()

Zwraca miesiąc (0-11) w określonej dacie zgodnie z czasem uniwersalnym.

Rahul
źródło
5
Potrzebuje parens. W przeciwnym razie październik pojawi się jako miesiąc 91 (od 9 + 1 = 91 w strunie)
rob
5
Powinny być dt.getFullYear () + "/" + (dt.getMonth () + 1) + "/" + dt.getDate ();
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
źródło
2
Myślę, że mogłoby to być lepsze w przypadku nowego przypadku trzeciego Date (). ToISOString (). Split ('T') [0] .replace (/ - / g, '/');
Mohamed Hesham,
28

Sugeruję skorzystanie z Moment.js http://momentjs.com/

Następnie możesz zrobić:

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

Uwaga: tak naprawdę nie musisz dodawać, new Date()jeśli chcesz bieżącą datę, dodałem ją tylko jako odniesienie, do którego możesz przekazać obiekt daty. dla bieżącej daty i godziny działa to również:

moment().format("YYYY/MM/DD");
fmsf
źródło
1
Ta odpowiedź jest dobra, jeśli chcesz dodać zależność - a jeśli tak, to od 2019 day.js jest lżejszą alternatywą niż moment.js jako opcja do rozważenia - github.com/iamkun/dayjs . Wspomniano również, że istnieje Luxon i data-fns.
BradGreens,
18

informacje

Jeśli pożądany jest dwucyfrowy miesiąc i data (2016/01/01 vs. 2016/1/1)

kod

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

wynik

2016/10/06

skrzypce

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

kredyt

Więcej informacji i odpowiedź na tę odpowiedź

więcej

Aby dowiedzieć się więcej o spróbować to sam redaktor w w3schools pomógł mi lepiej zrozumieć, w jaki sposób z niego korzystać..slice

Hastig Zusammenstellen
źródło
Ale jeśli data jest ustawiona na Decemeber, nie zostanie ona przekazana do stycznia przyszłego roku?
Hanz Cheah
13

Skorzystaj z metod Data Get.

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
źródło
4
Miesiące w JavaScript Data obiekty są indeksowane zerowo. Dodaj do niego 1, w przeciwnym razie grudzień będzie listopadem; Listopad ma być październikiem i tak dalej
klapnij
1
@Aseem Powinien być tylko miesiąc, który potrzebuje +1
Hastig Zusammenstellen
12
var date = new Date().toLocaleDateString()
"12/30/2009"
aldokkani
źródło
2
Aby porównać 2 daty, odpowiedź jest na topie. Dzięki!
Dazag
9

FORMAT EUROPEJSKI (ANGIELSKI / HISZPAŃSKI)
Potrzebuję również bieżącego dnia, możesz go użyć.

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


* W przypadku formatu hiszpańskiego wystarczy przetłumaczyć zmienną WEEK.

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


Wyjście: poniedziałek - 16.11.2015 14:24

Philip Enc
źródło
6

Z przyjętymi odpowiedź, 01 stycznia zostanie wyświetlona tak: 2017/1/1.

Jeśli wolisz 2017/01/01, możesz użyć:

var dt = new Date();
var date = dt.getFullYear() + '/' + (((dt.getMonth() + 1) < 10) ? '0' : '') + (dt.getMonth() + 1) + '/' + ((dt.getDate() < 10) ? '0' : '') + dt.getDate();
Basj
źródło
6

Dlaczego nie po prostu?

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

Sprawdź tutaj:

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

João Pimentel Ferreira
źródło
2

Oto czystszy sposób na uzyskanie roku / miesiąca / dnia za pomocą literałów szablonów:

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

ExillustX
źródło
2
let dateObj = new Date();

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

W celach informacyjnych możesz zobaczyć poniższe szczegóły

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)

// Zwróć minuty (0-59) nową datę (). GetMonth () // Zwróć miesiąc (0-11) nową datę (). GetSeconds () // Zwróć sekundy (0-59) nową datę () .getTime () // Zwraca czas (w milisekundach od 1 stycznia 1970)

Srikrushna
źródło
1

Możesz po prostu użyć tego kodu jednego wiersza, aby uzyskać datę w formacie rok-miesiąc-data

var date = new Date().getFullYear() + "-" + new Date().getMonth() + 1 + "-" + new Date().getDate();
Muhammad Ahsan
źródło
-1

Korzystam z tego, co działa, jeśli podasz mu znacznik daty obj lub js:

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
źródło
-1

ES2018 wprowadził grupy przechwytywania wyrażeń regularnych, które można wykorzystać do przechwytywania dnia, miesiąca i roku:

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

Zaletą tego podejścia jest możliwość wychwycenia dnia, miesiąca, roku dla niestandardowych formatów ciągów znaków.

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

Przemek Struciński
źródło
Pytanie dotyczyło w szczególności sformatowania daty w „miesiącu / dniu / roku” z obiektu Date. Grupy przechwytywania wyrażeń regularnych nie mają tutaj zastosowania.
Colin