Como faço para obter a data atual em JavaScript?
new Date()
retorna a hora atual , não a data atual . A distinção importa se você está tentando compará-la com outra data que não possui um componente de horário (ou seja, é à meia-noite).
Como faço para obter a data atual em JavaScript?
new Date()
retorna a hora atual , não a data atual . A distinção importa se você está tentando compará-la com outra data que não possui um componente de horário (ou seja, é à meia-noite).
Respostas:
Use new Date()
para gerar um novo Date
objeto que contém a data e hora atuais.
var today = new Date();
var dd = String(today.getDate()).padStart(2, '0');
var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
var yyyy = today.getFullYear();
today = mm + '/' + dd + '/' + yyyy;
document.write(today);
Isso fornecerá a data de hoje no formato de mm / dd / aaaa.
Simplesmente mude today = mm +'/'+ dd +'/'+ yyyy;
para o formato que desejar.
01
, 02
, ...,09
Date.prototype.toLocaleDateString()
método é uma solução mais flexível. Faz parte do JavaScript desde o ECMAScript 5.1 e é bem suportado por navegadores sempre verdes. MDN:toLocaleDateString()
var utc = new Date().toJSON().slice(0,10).replace(/-/g,'/');
document.write(utc);
Use a replace
opção para reutilizar a utc
variável new Date(utc)
, como Firefox e Safari não reconhece uma data com hífens.
toUTCString()
retorna como utc datetime.
moment( new Date().toJSON().slice(0, 10) )
ATUALIZADA! , Rolar para baixo
Se você quer algo simples e bonito para o usuário 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>
ATUALIZAÇÃO DO UBBER Após muita procrastinação, finalmente consegui o GitHubbed e atualizei isso com a solução final que estou usando para mim. Ele teve algumas edições de última hora para torná-lo mais doce! Se você está procurando o jsFiddle antigo , consulte isso .
Esta atualização vem em dois sabores, ainda relativamente pequenos, embora não tão pequenos quanto a minha resposta original acima. Se você quiser extremamente pequeno, vá com isso.
Nota também: isso ainda é menos inchado que moment.js. Embora moment.js seja legal, imo, ele tem muitos métodos seculares, que exigem um momento de aprendizado como se fosse um idioma. O meu aqui usa o mesmo formato comum que o PHP: date .
Sabor 1
new Date().format(String)
Meu Fav Pessoal. Conheço o tabu, mas funciona muito bem no objeto Data. Esteja ciente de quaisquer outros mods que você possa 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)
Método all-in-one mais tradicional. Tem toda a capacidade do anterior, mas é chamado pelo método com o parâmetro Date.
// use as simple as
dateFormat(new Date(), 'm-d-Y h:i:s'); // 07-06-2016 06:38:34
Sabor de bônus (requer jQuery)
$.date(Date, String)
Contém muito mais do que apenas umaformat
opção simples . Ele estende o objeto Date base e inclui métodos comoaddDays
. Para mais informações, consulte o Git .
Neste mod, os caracteres de formato são inspirados no PHP: date . Para uma lista completa, consulte o meu README
Este mod também possui uma lista muito maior de formatos pré-fabricados. Para usar um formato pré-fabricado, basta digitar o nome da chave.dateFormat(new Date(), 'pretty-a');
Como você pode notar, você pode usar o dobro \
para escapar de um personagem.
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 "03/08/2018":
let today = new Date().toLocaleDateString()
console.log(today)
Além disso, você pode passar a localidade como argumento, por exemplo toLocaleDateString("sr")
, etc.
Se você quiser apenas uma data sem informações de hora, use:
var today = new Date();
today.setHours(0, 0, 0, 0);
document.write(today);
Tente o seguinte:
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
Se você está procurando um controle muito mais granular sobre os formatos de data, recomendo verificar o momentjs. Biblioteca fantástica - e apenas 5KB. http://momentjs.com/
Você pode usar o moment.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>
moment().format("L")
para respeitar o local atual.
var d = (new Date()).toString().split(' ').splice(1,3).join(' ');
document.write(d)
Para dividir em etapas:
(new Date()).toString()
dá "28 de junho de 2013 às 15:30:18 GMT-0700 (PDT)"
(new Date()).toString().split(' ')
divide a string acima em cada espaço e retorna uma matriz da seguinte maneira: ["Fri", "Jun", "28", "2013", "15:31:14", "GMT-0700", "(PDT)" ]
(new Date()).toString().split(' ').splice(1,3).join(' ')
pega os segundo, terceiro e quarto valores da matriz acima, junta-os a espaços e retorna uma string "28 de junho de 2013"
Date().split(' ').splice(1,3).join(' ')
Isso 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);
console.log(today);
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"
});
new Date().toLocaleDateString("de-de")
faz o truque para mim.
Versão mais limpa e simples:
new Date().toLocaleString();
O resultado varia de acordo com a localidade do usuário :
27/02/2017, 9:15:41 AM
Se você estiver satisfeito com o formato AAAA-MM-DD, isso também funcionará.
new Date().toISOString().split('T')[0]
2018-03-10
Você pode usar a biblioteca Date.js. que estende o objeto Date; portanto, você pode ter o método .today ().
Você pode obter a data atual para chamar 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
var dtToday = new Date(date.now);
A resposta de Varun não conta para TimezoneOffset . 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
São TimezoneOffset
minutos, enquanto o construtor Date leva milissegundos, portanto, a multiplicação por 60000
.
A resposta mais curta é: new Date().toJSON().slice(0,10)
new Date().toDateString();
Resultado:
"Qua 03 fev 2016"
Como toISOString()
retornará apenas a hora UTC atual, não a hora local. Temos que marcar uma data usando a função '.toString ()' para obter a data em um yyyy-MM-dd
formato como
document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('T')[0]);
Para obter data e hora em yyyy-MM-ddTHH:mm:ss
formato
document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('.')[0]);
Para obter data e hora em yyyy-MM-dd HH:mm:ss
formato
document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('.')[0].replace('T',' '));
Se você deseja um DD/MM/YYYY
formato simples , acabei de apresentar esta solução simples, embora não prefixe zeros ausentes.
var d = new Date();
document.write( [d.getDate(), d.getMonth()+1, d.getFullYear()].join('/') );
new Date().toISOString().slice(0,10);
funcionaria também
ÚLTIMA EDIÇÃO: 23/8/19 A biblioteca date-fns funciona como moment.js, mas tem uma pegada MUITO menor. Ele permite que você escolha quais funções deseja incluir no seu projeto para não precisar compilar toda a biblioteca para formatar a data de hoje. Se uma biblioteca mínima de terceiros não for uma opção para o seu projeto, eu apoio a solução aceita por Samuel Meddows na parte superior.
Preservar a história abaixo porque ajudou algumas pessoas. Mas, para constar, é bastante hacky e passível de interrupção sem aviso, como são a maioria das soluções neste post
EDIT 7/7/2017 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 latest, & chrome returntodaysDate = "2/7/2017"
"funcionam" * no IE10 +
Explicação
Eu descobri que o IE10 e o IE Edge fazem as coisas de maneira um pouco diferente. comnew Date(Date.now()).toLocaleString()
como entrada,
O IE10 retorna:
"Tuesday, February 07, 2017 2:58:25 PM"
Eu poderia escrever uma grande função longa e FTFY. Mas você realmente deve usar o moment.js para essas coisas. Meu script apenas limpa isso e fornece a notação tradicional expandida dos EUA:> todaysDate = "March 06, 2017"
IE EDGE retorna:
"2/7/2017 2:59:27 PM"
Claro que não poderia ser tão fácil. A sequência de datas da borda possui caracteres "•" invisíveis entre cada uma visível. Portanto, agora não apenas verificaremos se o primeiro caractere é um número, mas os três primeiros, uma vez que qualquer caractere único em todo o período acabará sendo um ponto ou uma barra em algum momento. Então, para simplificar, basta .slice () os três primeiros caracteres (buffer minúsculo contra futuras travessuras) e verifique se há números. Provavelmente, deve-se notar que esses pontos invisíveis podem persistir em seu código. Talvez eu investigue isso se você tiver planos maiores do que apenas imprimir essa sequência na sua visualização.
One atualização one-liner:
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];
Isso é uma merda de ler. E se:
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 uma linha para você:
new Date(Date.now()).toLocaleString().split(', ')[0];
e [1]
lhe dará a hora do dia.
Você pode usar isso
<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 você estiver usando jQuery. Experimente este forro:
$.datepicker.formatDate('dd/mm/yy', new Date());
Aqui está a convenção para formatar a data
Aqui está a referência para o dateQuicker do jQuery
Uma maneira direta de fazer isso (considerando o fuso horário atual, aproveitando o formato ISO aaaa-mm-dd) é:
let d = new Date().toISOString().substring(0,19).replace("T"," ") // "2020-02-18 16:41:58"
Geralmente, esse é um formato de data compatível com todos os fins e você pode convertê-lo em um valor de data puro, se necessário:
Date.parse(d); // 1582044297000
Você pode fazer o checkout
var today = new Date();
today = parseInt(today.getMonth()+1)+'/'+today.getDate()+'/'+today.getFullYear()+"\nTime : "+today.getHours()+":"+today.getMinutes()+":"+today.getSeconds();
document.write(today);
E consulte a documentação do construtor Date (). ligação
Qual é o grande problema com isso? A maneira mais limpa de fazer isso é
var currentDate=new Date().toLocaleString().slice(0,10);
3/4/2018,
, melhores para usar new Date().toJSON().slice(0,10)
.
.slice(0,10)
Isso pode ajudá-lo
var date = new Date();
console.log(date.getDate()+'/'+(date.getMonth()+1)+'/'+date.getFullYear());
Isso imprimirá a data atual no formato dd / MM / aaaa
É bom obter uma data formatada
let date = new Date().toLocaleDateString("en", {year:"numeric", day:"2-digit", month:"2-digit"});
console.log(date);
Eu acho que essa é uma pergunta antiga, mas a maneira mais fácil seria a seguinte:
var date = new Date();
var TimeStamp = date.toLocaleString();
function CurrentTime(){
alert(TimeStamp);
}
Isso pegará a hora atual, passará para uma string com base na localização e, em seguida, você poderá chamar a função CurrentTime para exibir a hora. Essa seria, para mim, a maneira mais eficaz de obter um carimbo de data / hora para alguma coisa.
var currentTime = new Date();