Typescript: Criar uma nova data a partir da string adiciona 21 segundos ao resultado

Criado em 5 jul. 2019  ·  4Comentários  ·  Fonte: microsoft/TypeScript


Versão TypeScript: 3.5.2


Termos de pesquisa: 3.5.2 data 21 segundos new Date () new Date string greenwich França

Código

A criação de novas datas (anteriores ou iguais a 10 de março de 1911) a partir de datas de formato de string adiciona 21 segundos à data resultante.


var firstDate = new Date("1900-01-01T00:00:00.000Z").toString()
// Mon Jan 01 1900 00:09:21 GMT+0009 (Central European Standard Time)

var secondDate = new Date(firstDate).toString()
// Mon Jan 01 1900 00:09:42 GMT+0009 (Central European Standard Time)

var thirdDate = new Date(secondDate).toString()
// Mon Jan 01 1900 00:10:03 GMT+0009 (Central European Standard Time)

Comportamento esperado:
Deve retornar Mon Jan 01 1900 00:09:21 GMT + 0009 (Hora Padrão da Europa Central)

Comportamento real:
Adiciona 21 segundos toda vez que uma nova data (string) é chamada.

Link Playground:

Assuntos relacionados:

Question

Comentários muito úteis

\

@ j-oliveras tudo depende das opções do compilador:

temporalAnomaly

<\ / sarcasmo>

Todos 4 comentários

Como isso é um erro com o texto digitado quando está em tempo de execução?

Em seguida, toString está em letras minúsculas. Com o Node (10.15.3), o console de devtools do Firefox (67.0.4) e o console de devtools do Chrome (75), funciona como esperado (comentários da saída do nó):

var firstDate = new Date("1900-01-01T00:00:00.000Z").toString()
// Mon Jan 01 1900 01:00:00 GMT+0100 (GMT+01:00)

var secondDate = new Date(firstDate).toString()
// Mon Jan 01 1900 01:00:00 GMT+0100 (GMT+01:00)

var thirdDate = new Date(secondDate).toString()
// Mon Jan 01 1900 01:00:00 GMT+0100 (GMT+01:00)

\

@ j-oliveras tudo depende das opções do compilador:

temporalAnomaly

<\ / sarcasmo>

Com toda a seriedade, @ ruslan-volkov, esse problema não diz respeito ao compilador TypeScript. Contanto que o compilador produza o código de saída JavaScript correto, o que ele faz, não há nada de errado com o TypeScript.

O que você está vendo pode muito bem ser um bug em um determinado mecanismo de tempo de execução JavaScript (ou talvez vários mecanismos), provavelmente relacionado ao cálculo de datas antes de 1911 na França, quando o país estava 9 minutos e 21 segundos à frente do GMT . Mas não tem nada a ver com o TypeScript.

Também não tenho certeza se alguém no mundo do tempo de execução JS vai se importar muito com isso, dados todos os problemas com a criação de Date objetos da maneira que você está fazendo:

Observação: a análise de strings de data com o construtor Date ... é fortemente desencorajada devido a diferenças e inconsistências do navegador.

Boa sorte!

Obrigado por suas respostas e seu tempo, meu mal!

Esta página foi útil?
0 / 5 - 0 avaliações