2017-10-20 195 views
0

我已經搜索過,並已找到解決方案,但他們不使用日期-Fns或只是不工作,因爲他們正在計算天,我只專注於小時同一天。計算小時之間的差異

我試圖計算兩個日期之間的差異,或者更具體地說,在同一天的幾個小時之間的差異,這樣我就可以得到有人進入時鐘並計算出他們當天工作的小時數。

我使用日期FNS

如果我跑console.log(this.myForm.value.startTime)我得到14:00。如果我運行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作爲字符串'沒有運氣。 – timgavin

+1

@timgavin爲什麼不只是'this.myForm.value.startTime = this.myForm.value.startTime | 「00:00」',這樣虛假值就被默認值覆蓋了! –

+0

修好了!謝謝:) – timgavin

0

我認爲這真的很簡單,如果你有兩個Date對象,以獲得差異從其減去Date.prototype.getTime(所以不要dateFns格式化尚)

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

您還可以詳談,Math.round(minutes)

希望它有幫助:)

+0

此方法:'VAR端=新日期(this.myForm.value.endTime) '給我'NaN'和這個方法:'var start = this.myForm.value.startTime;'給我這個:'ERROR TypeError:start.getTime不是一個函數'。 – timgavin