2017-10-20 17 views
0

私はSOを検索してこれに対する解決策を見つけましたが、date-fnを使用していないか、または単に計算していないため、動作しません。即日。時間の差を計算する

私は2つの日付の差、つまり具体的には同じ日の時間の差を計算しようとしています。誰かが時計を入れて時計を合わせて、その日に働いた時間を計算できます。私はconsole.log(this.myForm.value.startTime)を実行し、私は14:00を取得する場合

私は、日付FNS

を使用しています。

console.log(this.myForm.value.endTime)を実行すると、16:00と表示されます。

時間を計算する機能は次のとおりです。

updateHours() { 
    var end = dateFns.format(new Date(this.myForm.value.endTime, 'HH:mm')); 
    var start = dateFns.format(new Date(this.myForm.value.startTime, 'HH:mm')); 
    var result = dateFns.differenceInMinutes(
     new Date(end), 
     new Date(start) 
    ) 
    console.log(result); 
} 

resultの値は、私が間違って何をやっている、常にNaN

のですか?

答えて

1

minutesの違いを取得したいだけなので、このアプローチに従うのは簡単です。

endstartに設定された値は、元のコードでは未定義です。

私は新しい日付を作成し、日付方法.setHours()を使用して時間と分を設定します。

date.setHours(0, 0, 0); // Set hours, minutes and seconds 

var start_time = "14:00"; 
 
var end_time = "16:00"; 
 

 
function updateHours() { 
 
    var current = new Date(); 
 
    var start = current.setHours(start_time.split(":")[0], start_time.split(":")[1], 0); 
 
    var end = current.setHours(end_time.split(":")[0], end_time.split(":")[1], 0); 
 
    console.log(start, end) 
 
    var result = dateFns.differenceInMinutes(
 
    end, 
 
    start 
 
) 
 
    console.log(result); 
 
} 
 
updateHours();
.as-console { 
 
    height: 100%; 
 
} 
 

 
.as-console-wrapper { 
 
    max-height: 100% !important; 
 
    top: 0; 
 
    text-align:center; 
 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/date-fns/1.29.0/date_fns.min.js"></script>

参考文献:

  1. ​​
+0

は私のフォーム 'this.myForm.value.startTime'から値を取得するまでうまく動作し、' NaN'を返します。私も運がない 'this.myForm.value.startTime as string'を試しました。 – timgavin

+1

@timgavinどうして 'this.myForm.value.startTime = this.myForm.value.startTime | "00:00" 'のように、偽の値はデフォルト値で上書きされます! –

+0

それはそれを修正しました!ありがとう:) – timgavin

0

私は、あなたがDate.prototype.getTimeをsubstracting差(そうまだdateFnsでフォーマットしていない)

var minutes = Math.abs(start.getTime() - end.getTime())/60000 // display in minutes 

あなたはまた、それを丸めることができますを取得するには、2つのDateオブジェクトを持っている場合、それは本当に簡単だと思うMath.round(minutes)

期待してください:)

+0

この方法: 'VARエンド=新しいDate(this.myForm.value.endTime) '私に与える'NaN'、そしてこのメ​​ソッド:' var start = this.myForm.value.startTime; '私にこれを与える:' ERROR TypeError:start.getTimeは関数ではない '。 – timgavin