我正在計算 golang 中的日期差異,我已經編寫了代碼并且它執行得很好但是當我以分鐘為單位計算時間差異時,將其轉換為整數并在 if 條件下進行比較。我正在嘗試的代碼根據以下條件,它不應打印“diffinmin is greater P”,但它正在打印。我哪里做錯了?package mainimport ( "fmt" "time" "strconv")func main() { //fetching current time currentTime := time.Now() loc := currentTime.Location() //past time comes in as string pasttimestr := "2018-10-18 01:00" layout := "2006-01-02 15:04" //converting string to date pasttime, err := time.ParseInLocation(layout, pasttimestr, loc) if err != nil { fmt.Println(err) } fmt.Println("Past Time: ", pasttime) fmt.Println("Current Time: ", currentTime) //differnce between pastdate and current date diff := currentTime.Sub(pasttime) var diffinmin int = int(diff.Minutes()) fmt.Printf( "heloo",diffinmin ) fmt.Printf("time difference is %v or %v in minutes\n", diff, diff.Minutes()) var strconfigtime = "9000" var mininttimeconfig int if mininttimeconfig, err := strconv.Atoi(strconfigtime); err == nil { fmt.Printf("i=%d, type: %T\n", mininttimeconfig, mininttimeconfig) } if diffinmin > mininttimeconfig { fmt.Printf("diffinmin is greater" ) }}小提琴:https://play.golang.org/p/x6-RebYycpk
1 回答

慕姐8265434
TA貢獻1813條經驗 獲得超2個贊
它是關于范圍的,您在檢查中使用的 mininttimeconfig 的值為 0。
if mininttimeconfig, err := strconv.Atoi(strconfigtime); err == nil {
// mininttimeconfig is a new variable scoped to this block
}
// here mininttimeconfig is 0 from declaration line
// var mininttimeconfig int
嘗試將行更改為:
var mininttimeconfig int
mininttimeconfig, err = strconv.Atoi(strconfigtime);
if err == nil {
// ...
或者:
mininttimeconfig, err := strconv.Atoi(strconfigtime);
if err == nil {
// ...
注意通常使用 error 就像 if err != nil {...}
- 1 回答
- 0 關注
- 124 瀏覽
添加回答
舉報
0/150
提交
取消