これはJavaScriptで動作します
new Date()-new Date("2013-02-20T12:01:04.753Z")
しかしtypescriptでは2つの新しい日付を休めることはできません
Date("2013-02-20T12:01:04.753Z")
parematerが日付の署名と一致しないため機能しません
これはJavaScriptで動作します
new Date()-new Date("2013-02-20T12:01:04.753Z")
しかしtypescriptでは2つの新しい日付を休めることはできません
Date("2013-02-20T12:01:04.753Z")
parematerが日付の署名と一致しないため機能しません
回答:
getTime
メソッドを使用して、1970-01-01からの合計ミリ秒単位の時間を取得し、それらを差し引きます。
var time = new Date().getTime() - new Date("2013-02-20T12:01:04.753Z").getTime();
new Date(1970, 1, 1, 0, 0, 0, 0).valueOf() // returns 2674800000 new Date(1970, 1, 1, 0, 0, 0, 0).getTime() // returns 2674800000
new Date().getTime()
する代わりに、Date.now()
不必要に新しいオブジェクトを作成しないようにします。
typescriptでこれを行う方法は次のとおりです。
(new Date()).valueOf() - (new Date("2013-02-20T12:01:04.753Z")).valueOf()
読みやすさの向上:
var eventStartTime = new Date(event.startTime);
var eventEndTime = new Date(event.endTime);
var duration = eventEndTime.valueOf() - eventStartTime.valueOf();
eventStartTime
、eventEndTime
その期間がaとして入力されますnumber
(つまり、ここで文字列の3行目のコードをそのまま使用すると、期間は数値になります)
Date - Date
TypeScriptが防止するように設計されている型強制に厳密に依存しているため、機能しません。
+
接頭辞を使用してこれに回避策があります:
var t = Date.now() - +(new Date("2013-02-20T12:01:04.753Z");
または、使用したくない場合Date.now()
:
var t = +(new Date()) - +(new Date("2013-02-20T12:01:04.753Z"));
または、以下を使用したよりエレガントなソリューションについては、以下のSiddharth Singhの回答を参照してください。 valueOf()
差を計算するには、+
演算子を配置する必要があります。
こうするとtypescript
、日付が数値に変換されます。
+new Date()- +new Date("2013-02-20T12:01:04.753Z")
そこから、差をminutes
またはに変換する式を作成できますhours
。
// TypeScript
const today = new Date();
const firstDayOfYear = new Date(today.getFullYear(), 0, 1);
// Explicitly convert Date to Number
const pastDaysOfYear = ( Number(today) - Number(firstDayOfYear) );