Eu tenho um Date
objeto Como renderizo a title
parte do seguinte snippet?
<abbr title="2010-04-02T14:12:07">A couple days ago</abbr>
Eu tenho a parte "tempo relativo em palavras" de outra biblioteca.
Eu tentei o seguinte:
function isoDate(msSinceEpoch) {
var d = new Date(msSinceEpoch);
return d.getUTCFullYear() + '-' + (d.getUTCMonth() + 1) + '-' + d.getUTCDate() + 'T' +
d.getUTCHours() + ':' + d.getUTCMinutes() + ':' + d.getUTCSeconds();
}
Mas isso me dá:
"2010-4-2T3:19"
javascript
datetime
iso8601
James A. Rosen
fonte
fonte
new Date("xx").toISOString()
produzNaN-NaN-NaNTNaN:NaN:NaN.NZ
A implementação nativa lança RangeException.Veja o último exemplo na página https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference:Global_Objects:Date :
fonte
<abbr title="2010-04-02T14:12:07">
) não possui fuso horário. Talvez eles quisessem a hora local, o que faria sentido para uma sequência de horas da interface do usuário?Quase todos os métodos ISO na Web descartam as informações do fuso horário aplicando uma conversão em "Z" ulu time (UTC) antes de emitir a string. .ToISOString () nativo do navegador também descarta informações de fuso horário.
Isso descarta informações valiosas, como o servidor ou destinatário, sempre pode converter uma data ISO completa em hora do Zulu ou em qualquer fuso horário necessário, além de obter as informações de fuso horário do remetente.
A melhor solução que encontrei é usar a biblioteca javascript Moment.js e usar o seguinte código:
Para obter a hora ISO atual com informações de fuso horário e milissegundos
Para obter a hora ISO de um objeto Data JavaScript nativo com informações de fuso horário, mas sem milissegundos
Isso pode ser combinado com o Date.js para obter funções como Date.today () cujo resultado pode ser passado para o momento.
Uma string de data formatada como esta é compiladora JSON e se presta bem para ser armazenada em um banco de dados. Python e C # parecem gostar.
fonte
moment(new Date()).format()
. "A partir da versão 1.5.0, o momento de chamada no formato # sem um formato assumirá o formato ISO8601YYYY-MM-DDTHH:mm:ssZ
". Doc: Role para cima em momentjs.com/docs/#/displaying/fromnowmoment().format()
"2015-03-04T17:16:05+03:00"
(new Date()).toISOString()
"2015-03-04T14:16:24.555Z"
A pergunta foi o formato ISO com precisão reduzida. Voila:
Supondo que o Z à direita seja desejado, caso contrário, omita.
fonte
Mais curto, mas não suportado pelo Internet Explorer 8 e versões anteriores:
fonte
Se você não precisa oferecer suporte ao IE7, o seguinte é um ótimo e conciso hack:
fonte
toJSON
método da data .JSON.stringify
está usando debaixo das cobertas de qualquer maneira.JSON
objeto, embora não em alguns modos de compatibilidade. Veja stackoverflow.com/questions/4715373/….toISOString()
?Normalmente, não quero exibir uma data UTC, pois os clientes não gostam de fazer a conversão na cabeça. Para exibir uma data ISO local , eu uso a função:
A função acima omite as informações de deslocamento do fuso horário (exceto se a hora local for UTC), então eu uso a função abaixo para mostrar o deslocamento local em um único local. Você também pode anexar sua saída aos resultados da função acima, se desejar mostrar o deslocamento em todas as vezes:
toLocalIsoString
usospad
. Se necessário, funciona como praticamente qualquer função de teclado, mas, para completar, é isso que eu uso:fonte
Falta um '+' após o 'T'
deve fazê-lo.
Para os zeros à esquerda, você pode usar isso daqui :
Usando assim:
fonte
fonte
O problema com o toISOString é que ele fornece data e hora apenas como "Z".
A ISO-8601 também define data e hora com diferença de fuso horário em horas e minutos, nas formas 2016-07-16T19: 20: 30 + 5: 30 (quando o fuso horário estiver à frente do UTC) e 2016-07-16T19: 20: 30-01 : 00 (quando o fuso horário estiver atrás do UTC).
Não acho que seja uma boa ideia usar outro plugin, moment.js, para uma tarefa tão pequena, especialmente quando você pode obtê-lo com algumas linhas de código.
Depois de compensar o fuso horário em horas e minutos, você pode anexar a uma sequência de data e hora.
Eu escrevi uma postagem no blog: http://usefulangle.com/post/30/javascript-get-date-time-with-offset-hours-minutes
fonte
Gostaria apenas de usar esta pequena extensão para
Date
- http://blog.stevenlevithan.com/archives/date-time-formatfonte
Consegui obter abaixo da saída com muito menos código.
Resultado:
fonte
Encontrei o básico do Stack Overflow em algum lugar (acredito que fazia parte de algum outro código de golfe do Stack Exchange) e o aprimorei para que funcione também no Internet Explorer 10 ou anterior. É feio, mas faz o trabalho.
fonte
Para estender a excelente e concisa resposta de Sean com um pouco de açúcar e sintaxe moderna:
Então por exemplo.
fonte