我有兩次,t1和t2。為了計算差異,我使用,
diff := t2.sub(t1)
上面的代碼回傳類似的差異10m30s,1h3m59s等等。
我需要為差異創造一些條件。例如,
if diff <= 5m {
do this
}
if diff > 20m {
do that
}
我的問題是是否有任何內置方法來比較時差。
我的另一個選擇是使用正則運算式決議回傳的差異,然后進行比較。但是我一直在尋找一些有效的方法,例如sub時間包提供的方法。
uj5u.com熱心網友回復:
t2.Sub(t1) 回傳持續時間,您可以簡單地使用比較運算子,例如:
d, _ := time.ParseDuration("4m4s")
if d <= 5 * time.Second {
fmt.Println("<= than limit")
} else {
fmt.Println("> than limit")
}
uj5u.com熱心網友回復:
方式一:當我們使用sub獲取時長
一個非常簡單的替代方法是直接使用sub函式的輸出。該func sub收益time.Duration型。因此,.Minutes()在我的情況下,只需添加方法即可達到目的。
t1 := time.Now()
time.Sleep(60011 * time.Millisecond)
t2 := time.Now()
timeDiff := t2.Sub(t1)
fmt.Println(timeDiff)
fmt.Printf("\nIn just minites: %.f\n", timeDiff.Minutes())
操場
方式2:當我們有持續時間string
如果我們將“差異”作為string( "10m2s") 型別,那么我相信我們需要使用該ParseDuration函式。來自 godocs ParseDuration
從檔案中,
ParseDuration 決議持續時間字串。持續時間字串是一個可能有符號的十進制數序列,每個都有可選的分數和單位后綴,例如“300ms”、“-1.5h”或“2h45m”。有效時間單位為“ns”、“us”(或“μs”)、“ms”、“s”、“m”、“h”。
我正在考慮像下面這樣使用它,
t = "10h10m6s"
timeDiff, _ := time.ParseDuration(t)
numberOfHours := timeDiff.Hours()
numberOfMinutes := timeDiff.Minutes()
numberOfSeconds := timeDiff.Seconds()
numberofNanosec := timeDiff.Nanoseconds()
在操場上找到示例片段
所以在上述任何一種情況下,我們都可以使用. 正如@gopher指出的那樣,要與任何時間范圍進行比較,我們不需要將其轉換為任何時間段(例如,g time.Minutes()來比較持續時間。Mintues(),Seconds()),但我們可以僅與所需的時間段進行比較。作為@HarisOsmanagi?人士指出,這既適用于輸出的ParseDuration和time.Sub(),因為它們都回傳time.Duration型別。所以我們可以做如下的事情,
if timeDiff < 5 * time.Minutes() {
do something
} else if timeDiff > 5 * time.Minutes(){
do something else
} else {
do nothing
}
一個例子是在操場上。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/343548.html
標籤:走
