TypeScriptバージョン: 3.5.2
検索用語:3。5。2日付21秒新しいDate()新しい日付文字列グリニッジフランス
コード
文字列形式の日付から新しい日付(1911年3月10日以前)を作成すると、結果の日付に21秒が追加されます。
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)
予想される行動:
1900年1月1日月曜日00:09:21GMT + 0009(中央ヨーロッパ標準時)を返す必要があります
実際の動作:
新しいDate(string)が呼び出されるたびに21秒を追加します。
遊び場リンク:
関連する問題:
これが実行時にあるとき、これはどのようにtypescriptのエラーですか?
次に、 toString
は小文字になります。 ノード(10.15.3)、Firefox(67.0.4)devtoolsコンソールおよびChrome(75)devtoolsコンソールでは、これは期待どおりに機能します(ノード出力からのコメント):
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それはすべてあなたのコンパイラオプションに依存します:
<\ /皮肉>
深刻なことに、@ ruslan-volkov、この問題はTypeScriptコンパイラには関係ありません。 コンパイラが正しいJavaScript出力コードを生成する限り、それは実行されますが、TypeScriptに問題はありません。
あなたが見ているのは、特定のJavaScriptランタイムエンジン(または複数のエンジン)のバグである可能性があります。おそらく、フランスがGMTより9分21秒進んでいた1911年より前の日付の計算に関係しています。 しかし、それはTypeScriptとは何の関係もありません。
また、 Date
オブジェクトの作成に関するすべての問題を考えると、JSランタイムの世界の誰かがこれに関心を持っているかどうかもわかりません。
注:
Date
コンストラクターを使用した日付文字列の解析は、ブラウザーの違いと不整合のために強くお勧めしません。
幸運を!
あなたの答えとあなたの時間をありがとう、私の悪い!
最も参考になるコメント
\
@ j-oliverasそれはすべてあなたのコンパイラオプションに依存します:
<\ /皮肉>