Eu tenho uma data com o formato Sun May 11,2014
. Como posso convertê-lo para o 2014-05-11
JavaScript?
function taskDate(dateMilli) {
var d = (new Date(dateMilli) + '').split(' ');
d[2] = d[2] + ',';
return [d[0], d[1], d[2], d[3]].join(' ');
}
var datemilli = Date.parse('Sun May 11,2014');
console.log(taskDate(datemilli));
O código acima me fornece o mesmo formato de data sun may 11,2014
,. Como posso consertar isso?
javascript
date
formatting
date-format
time-format
user3625547
fonte
fonte
Respostas:
Você pode fazer:
Exemplo de uso:
Resultado:
Demo no JSFiddle: http://jsfiddle.net/abdulrauf6182012/2Frm3/
fonte
'use strict';
@bhspencerBasta aproveitar o
toISOString
método interno que leva sua data para o formato ISO 8601:Onde yourDate é seu objeto de data.
Edit: algum cara escreveu isso para lidar com o fuso horário nos comentários:
fonte
new Date(yourDateStr).toISOString().split('T')[0]
const offset = yourDate.getTimezoneOffset(); yourDate = new Date(yourDate.getTime() + (offset*60*1000)); yourDate.toISOString().split('T')[0]
Isto deve resolver o problema de fuso horárionow.toISOString().substring(0,10);
Esta é uma alternativa mais limpa, uma vez que lembra queYYYY-MM-DD
são os primeiros caracteres dez do formato completo iso+ (offset
para a- (offset
)Eu uso dessa maneira para obter a data no formato aaaa-mm-dd :)
fonte
var todayDate = new Date(2018, 3 - 1, 26); todayDate.toISOString().slice(0, 10);
me dá"2018-03-25"
. Em outro sistemavar todayDate = new Date(2018, 3 - 1, 26, 17, 0, 0); todayDate.toISOString().slice(0, 10);
me dá"2018-03-27"
.A maneira mais simples de converter sua data para o formato aaaa-mm-dd, é fazer o seguinte:
Como funciona:
new Date("Sun May 11,2014")
converte a sequência"Sun May 11,2014"
em um objeto de data que representa a horaSun May 11 2014 00:00:00
em um fuso horário com base na localidade atual (configurações do sistema host)new Date(date.getTime() - (date.getTimezoneOffset() * 60000 ))
converte sua data em um objeto de data que corresponde à horaSun May 11 2014 00:00:00
no UTC (hora padrão) subtraindo o deslocamento do fuso horário.toISOString()
converte o objeto de data em uma string ISO 86012014-05-11T00:00:00.000Z
.split("T")
divide a string em array["2014-05-11", "00:00:00.000Z"]
[0]
pega o primeiro elemento dessa matrizDemo
fonte
- (date.getTimezoneOffset() * 60000 )
bit deve eliminar as diferenças de fuso horário, incluindo o impacto do horário de verão.Resultado:
fonte
eval
.return ((v.length > 1 ? "0" : "") + z[v.slice(-1)]).slice(-2);
Uma combinação de algumas das respostas:
fonte
toISOString()
e as possíveis falhas de fuso horário com o uso dessa função.Se você não tem nada contra o uso de bibliotecas, basta usar a biblioteca Moments.js da seguinte forma:
fonte
Simplesmente use isto:
Simples e doce;)
fonte
toISOString()
assume que sua data é hora local e a converte em UTC. Você receberá uma sequência de datas incorreta.O método a seguir deve retornar o que você precisa.
Fonte: https://blog.justin.kelly.org.au/simple-javascript-function-to-format-the-date-as-yyyy-mm-dd/
fonte
Recupere ano, mês e dia e depois junte-os. Direto, simples e preciso.
fonte
Você pode usar
toLocaleDateString('fr-CA')
noDate
objetoTambém descobri que esses locais dão o resultado correto nessa lista de locais. Lista de todos os locais e seus códigos de acesso?
Mostrar snippet de código
fonte
Para considerar também o fuso horário, esse one-liner deve ser bom sem nenhuma biblioteca:
fonte
Você pode tentar isso: https://www.npmjs.com/package/timesolver
Use-o no seu código:
Você pode obter a sequência de datas usando este método:
fonte
Nenhuma dessas respostas me satisfez. Eu queria uma solução de plataforma cruzada que me desse o dia no fuso horário local sem usar nenhuma biblioteca externa.
Isto é o que eu vim com:
Isso deve retornar o dia da data, no formato AAAA-MM-DD, no fuso horário em que a data faz referência.
Então, por exemplo,
localDay(new Date("2017-08-24T03:29:22.099Z"))
retornará"2017-08-23"
mesmo que já seja o 24º no UTC.Você precisará preencher novamente o Date.prototype.toISOString para que ele funcione no Internet Explorer 8, mas deve ser suportado em qualquer outro lugar.
fonte
Sugiro usar algo como formatDate-js em vez de tentar replicá-lo sempre. Basta usar uma biblioteca que suporte todas as principais ações de tempo de strft.
fonte
ou
Tente isso!
fonte
Aqui está uma maneira de fazer isso:
fonte
Date.js é ótimo para isso.
fonte
fonte
fonte
fonte
Algumas das respostas anteriores foram boas, mas não eram muito flexíveis. Eu queria algo que realmente pudesse lidar com mais casos extremos, então peguei a resposta de @orangleliu e a expandi. https://jsfiddle.net/8904cmLd/1/
Exemplo de uso:
fonte
Isso funcionou para obter a data atual no formato desejado (AAAAMMDD HH: MM: SS):
fonte
Nenhuma biblioteca é necessária
Apenas JavaScript puro.
O exemplo abaixo recebe os últimos dois meses a partir de hoje:
fonte
Formato de data compatível com PHP
Aqui está uma pequena função que pode usar os mesmos parâmetros que a função PHP
date()
e retornar uma string de data / hora em JavaScript.Observe que nem todas as opções de formato date () do PHP são suportadas. Você pode estender o
parts
objeto para criar o token de formato ausenteEssência
Aqui está uma lista com uma versão atualizada da
formatDate()
função e exemplos adicionais: https://gist.github.com/stracker-phil/c7b68ea0b1d5bbb97af0a6a3dc66e0d9fonte
Mais uma combinação de respostas. Bem legível, mas um pouco demorado.
fonte
Se a data precisar ser a mesma em todos os fusos horários, por exemplo, representar algum valor do banco de dados, use versões UTC do dia, mês, funções totalmente disponíveis no objeto de data JavaScript, pois isso será exibido na hora UTC e evite erros pontuais em determinados fusos horários.
Melhor ainda, use a biblioteca de datas Moment.js para esse tipo de formatação.
fonte
Eu modifiquei a resposta de Samit Satpute da seguinte forma:
fonte
Formate e localize a data máxima e mínima dos dados do hashmap:
fonte
A reformatação de uma sequência de datas é bastante simples, por exemplo,
fonte