Como posso obter a data atual em JavaScript?
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.
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.
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 .
- Data.formato.minuto.js 5, 08 KB
- Data format.minuto.js 4, 16 KB
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çãoformat
. Estende o objeto de data de base e inclui métodos comoaddDays
. 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-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.
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);
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
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.
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/
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>
var d = (new Date()).toString().split(' ').splice(1,3).join(' ');
document.write(d)
Dividi - lo em degraus:
(new Date()).toString()
dá " Fri 28 Jun 2013 15: 30: 18 GMT-0700 (PDT)"(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)"](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"
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);
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
Pode usar a data.js biblioteca que extende objecto de data, por isso pode ter .today () method.
Se estiver satisfeito com o formato AAAA-MM-DD, este também fará o trabalho.
new Date().toISOString().split('T')[0]
2018-03-10
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
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
.
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('/') );
new Date().toDateString();
Resultado:
"Wed Fev 03 2016"
new Date().toJSON().slice(0,10)
new Date().toISOString().slice(0,10);
Também funcionaria
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>
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
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 returntodaysDate = "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. comnew 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.
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',' '));
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
var currentDate=new Date().toLocaleString().slice(0,10);
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.
var dateTimeToday = new Date();
var dateToday = new Date(
dateTimeToday.getFullYear(),
(dateTimeToday.getMonth() + 1) /*Jan = 0! */,
dateTimeToday.getDate(),
0,
0,
0,
0);
new Date( 3600000*Math.floor(Date.now()/3600000) )
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