Come ottenere anno / mese / giorno da un oggetto data?


240

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

Come ottenere la data in formato 2009/12/30?


2
Volevi la data e l'ora UTC?
DOK,

Risposte:


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;

oppure puoi impostare una nuova data e fornire i valori sopra indicati


69
Basta ricordare: gennaio = 0, febbraio = 1 e così via.
Rubens Farias,

9
Qual è la differenza tra getMonthe getUTCMonth?
user198729

10
UTC restituirà il tempo universale. se vuoi l'ora locale usa getMonth
Hiyasat

54
getUTCDay()dovrebbe essere sostituito da getUTCDate(), poiché giorno è il numero del giorno della settimana (0-6) e data è il numero del giorno del mese (1-31).
Grzegorz Oledzki il

4
Questa risposta è ancora imperfetta, credo. getUTCDate () restituirà effettivamente il Giorno del mese ma in Inghilterra. Ad esempio, se digito: var d = new Date ("21 luglio 1983 01:15:00"); d.getDate () restituisce 21 ma d.getUTCDate () restituisce solo 20 Questo perché alle 01:15 del mattino in Francia (dove sono io), sono ancora le 23:15 in Inghilterra. Per ottenere il giorno che era nella data originale è necessario utilizzare getDate ().
Pascal Ganaye,

101
var dt = new Date();

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

Poiché l'indice mensile è basato su 0, è necessario incrementarlo di 1.

modificare

Per un elenco completo delle funzioni dell'oggetto data, consultare

Data

getMonth()

Restituisce il mese (0-11) nella data specificata in base all'ora locale.

getUTCMonth()

Restituisce il mese (0-11) nella data specificata in base all'ora universale.


5
Ha bisogno di genitori. Altrimenti ottobre apparirà come mese 91 (da 9 + 1 = 91 in stringland)
rapina

5
Dovrebbe essere 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"

2
Penso che questo potrebbe essere migliore per il nuovo caso new Date (). ToISOString (). Split ('T') [0] .replace (/ - / g, '/');
Mohamed Hesham,

28

Ti consiglierei di usare Moment.js http://momentjs.com/

Quindi puoi fare:

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

Nota: in realtà non è necessario aggiungere new Date()se si desidera il TimeDate corrente, l'ho aggiunto solo come riferimento per poter passare un oggetto data ad esso. per la data corrente funziona anche:

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

1
Questa risposta è buona se desideri aggiungere una dipendenza - e in tal caso a partire dal 2019 day.js è un'alternativa più leggera a moment.js come opzione da considerare - github.com/iamkun/dayjs . Anche menzionato c'è Luxon e date-fns.
BradGreens,

18

Informazioni

Se si desidera un mese e una data a 2 cifre (2016/01/01 vs 2016/1/1)

codice

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

produzione

2016/10/06

violino

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

credito

Maggiori informazioni e credito a questa risposta

Di Più

Per saperne di più su .slicel' provarlo voi stessi redattore presso w3schools mi ha aiutato a capire meglio come usarlo.


Ma se la data è impostata su Decemeber, non inoltrerà a gennaio del prossimo anno?
Hanz Cheah,


13

Utilizzare i metodi di acquisizione della data.

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

4
Mesi su JavaScript Gli oggetti Date sono indicizzati a zero. Assicurati di aggiungere 1, altrimenti dicembre diventerà novembre; Novembre sarà ottobre e così via
cllpse

1
@Aseem Dovrebbe essere solo il mese che ha bisogno del +1
Hastig Zusammenstellen,

12
var date = new Date().toLocaleDateString()
"12/30/2009"

2
Per confrontare 2 date questa risposta è in alto. Grazie!
Dazag,

9

FORMATO EUROPA (INGLESE / SPAGNOLO)
Ho bisogno di avere anche il giorno corrente, puoi usare questo.

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


* Per il formato spagnolo, basta tradurre la variabile WEEK.

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


Uscita: lunedì - 16/11/2015 alle 14:24


6

Con la risposta accettata, il 1 ° gennaio verrà visualizzato in questo modo: 2017/1/1 .

Se preferisci 2017/01/01, puoi usare:

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

6

Perché non semplicemente?

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

Controlla qui:

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


2

Ecco un modo più pulito di ottenere Anno / Mese / Giorno con valori letterali modello:

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


2
let dateObj = new Date();

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

Per riferimento è possibile vedere i dettagli di seguito

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)

// Restituisce i minuti (0-59) nuova data (). GetMonth () // Restituisce il mese (0-11) nuova data (). GetSeconds () // Restituisce i secondi (0-59) nuova data () .getTime () // Restituisce il tempo (millisecondi dal 1 gennaio 1970)


1

Puoi semplicemente usare questo codice a una riga per ottenere la data nel formato anno-mese-data

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

-1

Sto usando questo che funziona se gli passi un timestamp obj o js data:

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

-1

ES2018 ha introdotto gruppi di acquisizione regex che è possibile utilizzare per rilevare giorno, mese e anno:

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

Il vantaggio di questo approccio è la possibilità di rilevare giorno, mese, anno per formati di data stringa non standard.

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


La domanda era in particolare quella di formattare una data in "mese / giorno / anno" da un oggetto Date. I gruppi di acquisizione in regex non sono applicabili qui.
Colin,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.