Como obter ano / mês / dia a partir de um objeto de data?

240

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

Como obter a data em formato 2009/12/30?

user198729
fonte
2
Você queria data e hora do UTC?
DOK

Respostas:

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;

ou você pode definir uma nova data e fornecer os valores acima

Hiyasat
fonte
69
Lembre-se: janeiro = 0, fevereiro = 1 e assim por diante.
Rubens Farias
9
Qual é a diferença entre getMonthe getUTCMonth?
usar o seguinte comando
10
O UTC retornará a hora universal. se você quiser a hora local, use getMonth
Hiyasat
54
getUTCDay()deve ser substituído por getUTCDate(), já que dia é o número do dia da semana (0-6) e data é o número do dia do mês (1-31).
Grzegorz Oledzki
4
Essa resposta ainda é falha, acredito. getUTCDate () retornará o dia do mês, mas na Inglaterra. Por exemplo, se eu digitar: var d = new Date ("21 de julho de 1983 01:15:00"); d.getDate () retorna 21, mas d.getUTCDate () retorna apenas 20 Isso ocorre porque às 01:15 da manhã na França (onde estou), ainda são 23:15 na Inglaterra. Para obter o dia que estava na Data original, você deve usar getDate ().
Pascal Ganaye
101
var dt = new Date();

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

Como o índice do mês é baseado em 0, você deve incrementá-lo em 1.

Editar

Para obter uma lista completa das funções do objeto de data, consulte

Encontro

getMonth()

Retorna o mês (0 a 11) na data especificada, de acordo com a hora local.

getUTCMonth()

Retorna o mês (0 a 11) na data especificada, de acordo com a hora universal.

rahul
fonte
5
Precisa de parênteses. Caso contrário, outubro será exibido como mês 91 (desde 9 + 1 = 91 na região das cordas)
rob
5
Deve ser 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
fonte
2
Eu acho que isso poderia ser melhor para o terceiro caso novo Date (). ToISOString (). Split ('T') [0] .replace (/ - / g, '/');
Mohamed Hesham
28

Eu sugiro que você use Moment.js http://momentjs.com/

Então você pode fazer:

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

Nota: você não precisa adicionar new Date()se deseja o TimeDate atual, apenas o adicionei como referência para que você possa passar um objeto de data para ele. para o TimeDate atual, isso também funciona:

moment().format("YYYY/MM/DD");
fmsf
fonte
1
Esta resposta é boa se você deseja adicionar uma dependência - e, em caso afirmativo, a partir de 2019 day.js é uma alternativa mais leve ao moment.js como uma opção a considerar - github.com/iamkun/dayjs . Também mencionado, há Luxon e date-fns.
BradGreens
18

informação

Se um mês e data de 2 dígitos forem desejados (01/01/2016 vs 01/1 2016)

código

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

resultado

06/10/2016

violino

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

crédito

Mais informações e crédito para esta resposta

Mais

Para saber mais sobre .sliceo editor do try it yourself na w3schools, me ajudou a entender melhor como usá-lo.

Hastig Zusammenstellen
fonte
Mas se a data estiver definida como Decemeber, ela não será encaminhada para janeiro do próximo ano?
Hanz Cheah
13

Use os métodos de obtenção de 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();
Aseem Gautam
fonte
4
Meses nos objetos Data do JavaScript são indexados a zero. Não se esqueça de adicionar um a ele; caso contrário, dezembro será novembro; Novembro começa a ser outubro e assim por diante
cllpse
1
@Aseem Deve ser apenas o mês que precisa do +1
Hastig Zusammenstellen
12
var date = new Date().toLocaleDateString()
"12/30/2009"
aldokkani
fonte
2
Para comparar duas datas, esta resposta é superior. Obrigado!
Dazag 28/01
9

FORMATO DA EUROPA (INGLÊS / ESPANHOL) Se
você precisar obter o dia atual também, poderá usá-lo.

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


* Para o formato espanhol, apenas traduza a variável WEEK.

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


Saída: segunda - feira - 16/11/2015 14:24

Philip Enc
fonte
6

Com a resposta aceita, 01 de janeiro seria exibido como este: 2017/1/1.

Se preferir 2017/01/01, você pode usar:

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

Por que não simplesmente?

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

Verifique aqui:

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

João Pimentel Ferreira
fonte
2

Aqui está uma maneira mais limpa de obter Ano / Mês / Dia com literais de modelo:

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

ExillustX
fonte
2
let dateObj = new Date();

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

Para referência, você pode ver os detalhes abaixo

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)

// Retorna os minutos (0-59) new Date (). GetMonth () // Retorna o mês (0-11) new Date (). GetSeconds () // Retorna os segundos (0-59) new Date () .getTime () // Retorna a hora (milissegundos desde 1º de janeiro de 1970)

Srikrushna
fonte
1

Você pode simplesmente usar este código de uma linha para obter a data no formato ano-mês-data

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

Estou usando isso que funciona se você passar uma data obj ou js timestamp:

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
fonte
-1

O ES2018 introduziu grupos de captura de expressões regulares que você pode usar para capturar dia, mês e ano:

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

A vantagem dessa abordagem é a possibilidade de capturar dia, mês e ano para formatos de data de cadeia não padrão.

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

Przemek Struciński
fonte
A pergunta era específica sobre a formatação de uma data em "mês / dia / ano" a partir de um objeto Date. Grupos de captura no regex não são aplicáveis ​​aqui.
Colin