Como posso obter a data atual em JavaScript?

Como consigo a data actual em JavaScript?

Author: FullStackDeveloper, 2009-10-07

30 answers

Usar new Date() para gerar um novo objecto Date contendo a data e hora actuais.

var today = new Date();
var dd = today.getDate();
var mm = today.getMonth()+1; //January is 0!
var yyyy = today.getFullYear();

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

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

today = mm + '/' + dd + '/' + yyyy;
document.write(today);

Isto dar-lhe-á a data de hoje no formato mm/dd/AAAA.

Muda simplesmente today = mm +'/'+ dd +'/'+ yyyy; para o formato que quiseres.

 2095
Author: Samuel Meddows, 2017-06-21 09:24:10

var utc = new Date().toJSON().slice(0,10).replace(/-/g,'/');
document.write(utc);

Use a opção replace Se vai reutilizar a variável utc, como new Date(utc), Uma vez que o Firefox e o Safari não reconhecem uma data com erupções cutâneas.

 350
Author: Varun Natraaj, 2016-12-27 18:47:20

actualizado!, Descer

Se quiseres algo simples e bonito para o utilizador final ... Also, fixed a small suffix issue in the first version below. Now properly returns suffix.

var objToday = new Date(),
	weekday = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'),
	dayOfWeek = weekday[objToday.getDay()],
	domEnder = function() { var a = objToday; if (/1/.test(parseInt((a + "").charAt(0)))) return "th"; a = parseInt((a + "").charAt(1)); return 1 == a ? "st" : 2 == a ? "nd" : 3 == a ? "rd" : "th" }(),
	dayOfMonth = today + ( objToday.getDate() < 10) ? '0' + objToday.getDate() + domEnder : objToday.getDate() + domEnder,
	months = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'),
	curMonth = months[objToday.getMonth()],
	curYear = objToday.getFullYear(),
	curHour = objToday.getHours() > 12 ? objToday.getHours() - 12 : (objToday.getHours() < 10 ? "0" + objToday.getHours() : objToday.getHours()),
	curMinute = objToday.getMinutes() < 10 ? "0" + objToday.getMinutes() : objToday.getMinutes(),
	curSeconds = objToday.getSeconds() < 10 ? "0" + objToday.getSeconds() : objToday.getSeconds(),
	curMeridiem = objToday.getHours() > 12 ? "PM" : "AM";
var today = curHour + ":" + curMinute + "." + curSeconds + curMeridiem + " " + dayOfWeek + " " + dayOfMonth + " of " + curMonth + ", " + curYear;

document.getElementsByTagName('h1')[0].textContent = today;
<h1></h1>

UBBER ATUALIZAÇÃO Depois de muita procrastinação, eu finalmente GitHubbed e atualizado com a solução final eu venho usando para mim. Até teve algumas edições de última hora para torná-lo mais doce! Se você está procurando o Velho jsFiddle, por favor veja isto.

Esta actualização vem em 2 sabores, ainda relativamente pequenos, embora não tão pequenos como a minha resposta original. Se queres extremamente pequeno, vai com isso. {[46] } nota também: isto ainda é menos inchado que o momento.js. Um momento.js é agradável, imo, tem muitos métodos seculares, que exigem momento de aprendizagem como se fosse uma língua. O meu usa aqui o mesmo formato comum que PHP: date .

Rápido. Links

Sabor 1 new Date().format(String) O Meu Favorito. Eu conheço o tabu, mas funciona muito bem no objecto do encontro. Apenas esteja ciente de quaisquer outros mods que você pode ter para o objeto Data.

//  use as simple as
new Date().format('m-d-Y h:i:s');   //  07-06-2016 06:38:34

Sabor 2 dateFormat(Date, String) Mais tradicional método all-in-one. Tem toda a capacidade do anterior, mas é chamado via Método com Date param.

//  use as simple as
dateFormat(new Date(), 'm-d-Y h:i:s');  //  07-06-2016 06:38:34

Sabor de bónus (necessita de jQuery) $.date(Date, String) Isto contém muito mais do que apenas uma simples Opção format. Estende o objeto de data de base e inclui métodos como addDays. Para mais informações, consulte o Git.

Neste mod, os caracteres de formato são inspirados por PHP:date. Para uma lista completa, por favor veja o meu README

Este mod também tem muito mais tempo. lista de formatos pré-fabricados. Para usar um formato premade, basta digitar o seu nome de chave. dateFormat(new Date(), 'pretty-a');
    [[53]} "composto"
    • 'commonLogFormat' = 'd / M / Y: G: i: s'
    • 'exif' = 'Y: m: d G: i: s'
    • 'isoYearWeek' = = 'Y\\WW'
    • 'isoYearWeek2' = 'Y - \\WW'
    • 'isoYearWeekDay' = 'Y\ \ WWj'
    • 'isoYearWeekDay2' = 'Y - \\WW-j'
    • 'mySQL' = = 'Y-m-d h: i: s'
    • 'postgreSQL' = 'Y. z'
    • 'postgreSQL2' = ' Yz '
    • [[53]}'sabonete' == "Y-m-D \ TH: I: S. U."
    • 'soap2' = 'Y-m-d\ \ TH: i: s uP'
    • 'unixTimestamp' = = '@U '
    • 'xmlrpc' = 'Ymd\\tg: i: s'
    • 'xmlrpccccompact' = = 'Ymd\\tgis'
    • 'wddx' = 'Y-n-j\\TG: i: s'
  • 'constantes'
      [[53]}'americano' = = 'F j Y'
  • 'AMERICANSHORT' = 'm / d / Y'
  • 'AMERICANSHORTWTIME' = 'm / d / Y h: i: sA'
  • 'átomo' = = 'Y-m-D\\TH: I: sP'
  • 'COOKIE' = 'l d-M-Y H: i: s T'
  • 'Europeu' = ' J F Y '
  • 'EUROPEANSHORT' = 'D. M. Y'
  • 'EUROPEANSHORTWTIME' = 'D. M. Y H: i: s'
  • 'ISO8601' = 'Y-m-d\ \ TH: i: sO'
  • 'LEGAL' = 'j f Y'
  • 'RFC822' = 'D D M Y H: i: S O'
  • 'RFC850' = 'l d-M-y H: i: S T'
  • 'RFC1036' = 'D D M Y H: i: S O'
  • 'RFC1123' = 'D D M Y H: i: S O'
  • 'RFC2822' = 'D D M Y H: i: S O'
  • 'RFC3339' = 'Y-m-d\ \ TH:I: sP'
  • ' RSS '= = 'D D M Y H: i: S O'
  • 'W3C' == "Y-m-D \ TH:I:sP"
  • 'pretty'
    • 'pretty-a' = 'g:i.sA l jS \\\ \ f f Y'
    • 'pretty-b' = = 'g: iA l jS \\o\\f f Y'
    • ' pretty-c ' = 'N / D / Y g: iA'
    • 'pretty-d' = 'n / d / Y'
    • 'pretty-E' = 'F jS-g: ia'
    • 'pretty-f' = = 'g: iA'
  • Como você pode notar, você pode usar o double \ para escapar de um personagem.


     192
    Author: SpYk3HH, 2016-09-20 14:24:54

    Se apenas quiser uma data sem a informação da hora, use:

    var today = new Date();
        today.setHours(0, 0, 0, 0);
    
    document.write(today);
     121
    Author: Marshal, 2016-07-08 15:23:03

    Tenta isto:

    var currentDate = new Date()
    var day = currentDate.getDate()
    var month = currentDate.getMonth() + 1
    var year = currentDate.getFullYear()
    document.write("<b>" + day + "/" + month + "/" + year + "</b>")

    O resultado será como

    15/2/2012
    
     92
    Author: Jimmy M, 2016-02-10 11:20:31

    O mais curto possível.

    Para obter um formato como "2018-08-03":

    let today = new Date().toISOString().slice(0, 10)
    
    console.log(today)

    Para obter um formato como "8/3/2018":

    let today = new Date().toLocaleDateString()
    
    console.log(today)

    Também pode passar como argumento, por exemplo toLocaleDateString("sr"), etc.

     82
    Author: Damjan Pavlica, 2018-08-05 21:09:24

    Se está à procura de muito mais controlo granular sobre os formatos de data, recomendo a verificação completa do momentjs. Uma biblioteca fantástica e só 5KB. http://momentjs.com/

     58
    Author: benjamin.keen, 2012-12-12 01:03:28

    Podes usar o momento.js: http://momentjs.com/

    var m = moment().format("DD/MM/YYYY");
    
    document.write(m);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>
     45
    Author: Morad, 2016-07-08 15:28:51

    var d = (new Date()).toString().split(' ').splice(1,3).join(' ');
    
    document.write(d)

    Dividi - lo em degraus:

    1. (new Date()).toString() dá " Fri 28 Jun 2013 15: 30: 18 GMT-0700 (PDT)"

    2. (new Date()).toString().split(' ') divide a cadeia acima em cada espaço e retorna uma matriz da seguinte forma: ["Fri", "Jun"", "28", "2013", "15:31:14", "GMT-0700", " (PDT)"]

    3. (new Date()).toString().split(' ').splice(1,3).join(' ') pega o segundo, terceiro e quarto valores do array acima, junta-os com espaços ,e retorna uma string " Jun 28 2013"

     43
    Author: Rishabh Marya, 2016-07-08 15:22:27
    var date = new Date().toLocaleDateString("en-US");
    

    Além disso, você pode chamar o método toLocaleDateString com dois parâmetros:

    var date = new Date().toLocaleDateString("en-US", {
        "year": "numeric",
        "month": "numeric"
    });
    

    Artigo sobreMSDN . Mais sobre este método em MDN .

     36
    Author: Dunaevsky Maxim, 2015-12-22 17:18:02

    Isto funciona sempre:

        var now = new Date();
        var day = ("0" + now.getDate()).slice(-2);
        var month = ("0" + (now.getMonth() + 1)).slice(-2);
        var today = now.getFullYear() + "-" + (month) + "-" + (day);
        
        document.write(today);
     34
    Author: roshan, 2017-03-05 19:07:18

    Mais Limpo, versão mais simples:

    new Date().toLocaleString();
    

    O Resultado varia de acordo com a localização do utilizador :

    2/27/2017, 9:15:41 AM

     25
    Author: WhereDatApp.com, 2017-02-27 07:19:40

    Pode usar a data.js biblioteca que extende objecto de data, por isso pode ter .today () method.

     20
    Author: eomeroff, 2012-06-26 13:00:15

    Se estiver satisfeito com o formato AAAA-MM-DD, este também fará o trabalho.

    new Date().toISOString().split('T')[0]

    2018-03-10

     19
    Author: Aung Htet, 2018-03-10 14:48:28

    Você pode obter a chamada de data actual o método estático agora assim:

    var now = Date.now()
    

    Referência:

    Https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/now

     17
    Author: Jose Rojas, 2015-07-11 20:03:58

    A resposta de Varun não conta com Fuso-horário . Aqui está uma versão que faz:

    var d = new Date()
    new Date(d.getTime() - d.getTimezoneOffset() * 60000).toJSON().slice(0, 10) // 2015-08-11
    

    O TimezoneOffset É minutos, enquanto o construtor de datas leva milisegundos, assim a multiplicação por 60000.

     13
    Author: user1338062, 2017-05-23 12:18:27

    Se você quiser um formato simples DD/MM/YYYY, eu acabei de chegar com esta solução simples, embora ela não prefigure zeros em falta.

    var d = new Date();
    document.write( [d.getDate(), d.getMonth()+1, d.getFullYear()].join('/') );
     10
    Author: Phil Ricketts, 2015-06-30 08:10:36
    new Date().toDateString();
    

    Resultado:

    "Wed Fev 03 2016"

     8
    Author: user3519897, 2016-02-03 12:08:37
    A resposta mais curta é:: new Date().toJSON().slice(0,10)
     8
    Author: Blair Anderson, 2017-12-01 21:43:24
    new Date().toISOString().slice(0,10); 
    

    Também funcionaria

     7
    Author: Toucouleur, 2015-10-01 16:19:05

    Pode usar este

    <script>
    function my_curr_date() {      
        var currentDate = new Date()
        var day = currentDate.getDate();
        var month = currentDate.getMonth() + 1;
        var year = currentDate.getFullYear();
        var my_date = month+"-"+day+"-"+year;
        document.getElementById("dateField").value=my_date;    
    }
    </script>
    

    O HTML é

    <body onload='return my_curr_date();'>
        <input type='text' name='dateField' id='dateField' value='' />
    </body>
    
     5
    Author: Roger, 2014-10-19 19:17:38

    Se estiver a utilizar jQuery. Tente esta linha:

    $.datepicker.formatDate('dd/mm/yy', new Date());
    

    Aqui está a convenção para formatar a data

    • d-Dia do mês (sem zero inicial)
    • dd-dia do mês (dois dígitos)
    • o - dia do ano (sem zeros iniciais)
    • oo - dia do ano (três dígitos)
    • Nome abreviado
    • DD - nome do dia longo
    • m-mês do ano (sem zero inicial)
    • mm-mês do ano (dois dígitos)
    • Nome m mês curto
    • MM - nome mensal longo
    • ano - y (dois dígitos)
    • yy - year (quatro dígitos)

    Aqui está a referência para jQuery datepicker

     5
    Author: Souvik, 2017-02-01 11:50:51

    Uma solução JS de uma linha:

    Tl; dr

    var todaysDate = new Date(Date.now()).toLocaleString().slice(0,3).match(/[0-9]/i) ? new Date(Date.now()).toLocaleString().split(' ')[0].split(',')[0] : new Date(Date.now()).toLocaleString().split(' ')[1] + " " + new Date(Date.now()).toLocaleString().split(' ')[2] + " " + new Date(Date.now()).toLocaleString().split(' ')[3];

    edge, ff mais recente, & chrome return todaysDate = "2/7/2017"
    "obras" * em IE10 +

    EDITAR 2/7/2017

    Descobri que a IE10 e a IE Edge fazem as coisas de forma diferente.. quem diria. com new Date(Date.now()).toLocaleString() Como Entrada, O

    IE10 devolve:

    "Tuesday, February 07, 2017 2:58:25 PM"
    
    Podia escrever uma grande função longa e confortável. Mas devias usar o momento.js para estas coisas. O meu guião apenas limpa isto e dá-te a notação tradicional dos EUA.: > todaysDate = "March 06, 2017"

    IE EDGE devolve:

    "‎2‎/‎7‎/‎2017‎ ‎2‎:‎59‎:‎27‎ ‎PM"
    
    Claro que não pode ser assim tão fácil. a cadeia de datas de Edge tem caracteres invisíveis "•" entre cada um visível. por isso, não só agora vamos verificar se o primeiro carácter é um número, mas os primeiros 3 caracteres, uma vez que acontece que qualquer carácter único em todo o intervalo de datas será eventualmente um ponto ou uma barra em algum ponto. Entao para manter as coisas simples, apenas .slice () os três primeiros caracteres (minúsculo buffer contra as future shenanigans) e, em seguida, verificar os números. Deve notar-se que estes pontos invisíveis podem persistir no seu código. Talvez investigue isso se tiver planos maiores do que imprimir esta corda à sua vista.

    ∴ linha única actualizada:

    var todaysDate = new Date(Date.now()).toLocaleString().slice(0,3).match(/[0-9]/i) ? new Date(Date.now()).toLocaleString().split(' ')[0].split(',')[0] : new Date(Date.now()).toLocaleString().split(' ')[1] + " " + new Date(Date.now()).toLocaleString().split(' ')[2] + " " + new Date(Date.now()).toLocaleString().split(' ')[3];
    
    É uma porcaria ler. Que tal:
    var dateString = new Date(Date.now()).toLocaleString();
    var todaysDate = dateString.slice(0,3).match(/[0-9]/i) ? dateString.split(' ')[0].split(',')[0] : dateString.split(' ')[1] + " " + dateString.split(' ')[2] + " " + dateString.split(' ')[3];
    

    RESPOSTA ORIGINAL

    Eu tenho um uma linha para si:

    new Date(Date.now()).toLocaleString().split(', ')[0];
    

    E [1] dar-te-ão a hora do dia.

     5
    Author: Cameron Donahue, 2017-03-07 18:55:49

    Pois toISOString() só irá devolver a hora UTC actual, não a hora local. Temos de marcar uma data usando".função toString () ' para obter a data no formato yyyy-MM-dd Como

    document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('T')[0]);

    Para obter a data e a hora no formato yyyy-MM-ddTHH:mm:ss

    document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('.')[0]);

    Para obter a data e a hora no formato yyyy-MM-dd HH:mm:ss

    document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('.')[0].replace('T',' '));
     5
    Author: jafarbtech, 2018-05-18 07:27:16

    Podes verificar isto

    var today = new Date();
    today = parseInt(today.getMonth()+1)+'/'+today.getDate()+'/'+today.getFullYear()+"\nTime : "+today.getHours()+":"+today.getMinutes()+":"+today.getSeconds();
    document.write(today);
    

    E ver a documentação para o construtor de datas. ligação

     4
    Author: Akhil, 2015-08-11 06:31:18
    Qual é o problema disto?. A maneira mais limpa de fazer isso é

    var currentDate=new Date().toLocaleString().slice(0,10);

     4
    Author: ISONecroMAn, 2015-10-31 19:39:27
    Acho que esta é uma pergunta antiga, mas a maneira mais fácil seria a seguinte:
    var date = new Date();
    var TimeStamp = date.toLocaleString();
    
    function CurrentTime(){
      alert(TimeStamp);
    }
    

    Isto irá agarrar a hora actual, passá-la para uma cadeia de caracteres baseada na localização e depois poderá chamar a função CurrentTime para mostrar a hora. Esta seria, para mim, a forma mais eficaz de obter um carimbo de tempo para alguma coisa.

     3
    Author: Brock Davis, 2015-01-19 22:21:47
    var dateTimeToday = new Date();
    var dateToday = new Date(
        dateTimeToday.getFullYear(), 
        (dateTimeToday.getMonth() + 1) /*Jan = 0! */, 
        dateTimeToday.getDate(), 
        0, 
        0, 
        0, 
        0);
    
     3
    Author: Jas, 2015-04-12 16:07:32
    Não sei se vai ajudar alguém, mas estou a usar isto para conseguir o objectivo de hoje.
    new Date( 3600000*Math.floor(Date.now()/3600000) )
    
     3
    Author: marverix, 2015-10-01 15:25:15

    Isto pode ajudar-te

    var date = new Date();
    console.log(date.getDate()+'/'+(date.getMonth()+1)+'/'+date.getFullYear());
    

    Isto irá imprimir a data actual no formato dd/MM/AAAA

     3
    Author: Jayant Patil, 2016-08-17 08:33:10