1
我在程序中有以下代碼,目標是確保一個項目在一個時間範圍內可訪問。出於某種原因,這是錯誤的。我記錄了開始,結束和現在的時間。開始/結束日期通過JSON請求進入,沒有時區。 time.Now()給出了一個時區。那是我的問題嗎?我將如何解決它?GoLang解析time.Now()無時區?
func withinStartAndEnd(item Item) bool {
fmt.Println("Start Date", item.Start_date, "\n")
fmt.Println("End Date", item.End_date, "\n")
fmt.Println("Now:", time.Now(), "\n")
//BUG: For some reason event 0's are still not accessible within the timeframe. The fmt's above are to help look at it. time.Now() is printing MST.. maybe that's it?
/*
Start Date 2016-02-19 09:50:00 +0000 +0000
End Date 2016-02-19 10:00:00 +0000 +0000
Now: 2016-02-19 09:59:48.73003196 -0700 MST
2016/02/19 09:59:48 Item not accessible (#148)
*/
return item.Start_date.Before(time.Now()) && item.End_date.After(time.Now())
}
嗯。看起來開始/結束日期是從沒有時區的數據庫中存儲的,並且date.now假定沒有timezone = UTC,它比較了time.Now()是MST。如果我改變time.Now到time.Now()。MST(),它是關於數據庫的幾個小時。也許最好比較日期,小時和秒數,並忽略時區? –
@NathanHyland:具體的時間必須有一個位置。如果你不知道位置,假設UTC是最好的,你可以做。 – JimB
有什麼方法可以告訴去從數據庫中取出的時間是MST,然後呢?或者我需要更改數據庫類型以與時區有一個日期? 要澄清,不要更改數據庫時間TO MST(將它們從Go認爲它的UTC時間抵消它們幾個小時),但直接將其更改爲MST而不會影響時間。 –