Typescript: La création d'une nouvelle date à partir de la date de chaîne ajoute 21 secondes au résultat

Créé le 5 juil. 2019  ·  4Commentaires  ·  Source: microsoft/TypeScript


Version TypeScript: 3.5.2


Termes de recherche: 3.5.2 date 21 secondes nouveau Date () nouveau Date string greenwich France

Code

La création de nouvelles dates (antérieures ou égales au 10 mars 1911) à partir de dates au format chaîne ajoute 21 secondes à la date résultante.


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)

Comportement prévisible:
Devrait revenir lun 01 janvier 1900 00:09:21 GMT + 0009 (heure normale d'Europe centrale)

Comportement réel:
Ajoute 21 secondes à chaque fois que la nouvelle Date (chaîne) est appelée.

Lien Playground:

Problèmes liés:

Question

Commentaire le plus utile

\

@ j-oliveras tout dépend des options de votre compilateur:

temporalAnomaly

<\ / sarcasme>

Tous les 4 commentaires

En quoi est-ce une erreur avec dactylographié lors de l'exécution?

Ensuite, le toString est en minuscule. Avec Node (10.15.3), Firefox (67.0.4) devtools console et Chrome (75) devtools console cela fonctionne comme prévu (commentaires de la sortie du nœud):

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 tout dépend des options de votre compilateur:

temporalAnomaly

<\ / sarcasme>

En toute sincérité, @ ruslan-volkov, ce problème ne concerne pas le compilateur TypeScript. Tant que le compilateur produit le bon code de sortie JavaScript, ce qu'il fait, il n'y a rien de mal avec TypeScript.

Ce que vous voyez pourrait bien être un bogue dans un moteur d'exécution JavaScript particulier (ou peut-être dans plusieurs moteurs), probablement lié au calcul des dates avant 1911 en France, alors que le pays avait 9 minutes et 21 secondes d' avance sur GMT . Mais cela n'a rien à voir avec TypeScript.

Je ne sais pas non plus si quelqu'un dans le monde d'exécution JS s'en souciera beaucoup, étant donné tous les problèmes liés à la création d'objets Date comme vous le faites:

Remarque: l'analyse des chaînes de date avec le constructeur Date ... est fortement déconseillée en raison des différences et des incohérences du navigateur.

Bonne chance!

Merci pour vos réponses et votre temps, mon mauvais!

Cette page vous a été utile?
0 / 5 - 0 notes