第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Go:錯(cuò)誤獲取兩次之間的差異

Go:錯(cuò)誤獲取兩次之間的差異

Go
Qyouu 2021-11-22 15:38:15
我有一個(gè)headache時(shí)間。我有上面的代碼:// ticker := time.NewTicker(time.Minute * 1)    ticker := time.NewTicker(time.Second * 1)    defer ticker.Stop()    // new version    for t := range ticker.C {        // get duration        go func() {            now := time.Now()            const layout = "2006-01-02 15:04:05"            endDateStr := fmt.Sprintf("%04d-%02d-%02d 23:45:00", now.Year(), now.Month(), now.Day())            endDate, _ := time.Parse(layout, endDateStr)            duration := endDate.Sub(now)            drHours := (duration.Minutes() - math.Mod(duration.Minutes(), 60)) / 60            drMinutes := math.Mod(duration.Minutes(), 60)            //fmt.Println(duration.Hours())            fmt.Println(now)            fmt.Println(endDate)            durStr := fmt.Sprintf("%d:%d:00", uint64(drHours), uint64(drMinutes))            fmt.Printf("duration: %s\n", durStr)        }()        fmt.Println(t)    }在我的compnow并且endDate有不同的時(shí)區(qū):2015-11-12 10:33:53.9298552 +0500 UZT  // now2015-11-12 23:45:00 +0000 UTC          // endDate這就是為什么會(huì)得到錯(cuò)誤的持續(xù)時(shí)間。如何為它們?cè)O(shè)置相同的時(shí)區(qū)?又是一個(gè)問題,注意第一次和第二次tik的持續(xù)時(shí)間相差5小時(shí)。為什么會(huì)出現(xiàn)這些問題。我究竟做錯(cuò)了什么?你有什么主意嗎 ?讓我高興從你的任何提示?
查看完整描述

2 回答

?
PIPIONE

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊

為避免 DST(夏令時(shí))和其他錯(cuò)誤,在持續(xù)時(shí)間內(nèi)使用 UTC。例如,


package main


import (

    "fmt"

    "math"

    "time"

)


func main() {

    ticker := time.NewTicker(time.Second * 1)

    defer ticker.Stop()


    for t := range ticker.C {

        go func() {

            now := time.Now().UTC()


            const layout = "2006-01-02 15:04:05"

            endDateStr := fmt.Sprintf("%04d-%02d-%02d 23:45:00", now.Year(), now.Month(), now.Day())

            endDate, _ := time.Parse(layout, endDateStr)


            duration := endDate.Sub(now)

            drMinutes := math.Mod(duration.Minutes(), 60)

            drHours := (duration.Minutes() - drMinutes) / 60


            fmt.Println(now)

            fmt.Println(endDate)


            durStr := fmt.Sprintf("%d:%d:00", uint64(drHours), uint64(drMinutes))

            fmt.Printf("duration: %s\n", durStr)

        }()

        fmt.Println(t.UTC())

    }

}

輸出:


2015-11-12 06:41:40.123232567 +0000 UTC

2015-11-12 06:41:40.123409615 +0000 UTC

2015-11-12 23:45:00 +0000 UTC

duration: 17:3:00


查看完整回答
反對(duì) 回復(fù) 2021-11-22
?
森林海

TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個(gè)贊

peterSO 的回答是正確的。我用上面的代碼解決了這個(gè)問題:

endDate := time.Date(now.Year(), now.Month(), now.Day(), 23, 45, 0, now.Nanosecond(), now.Location())

如果有人遇到這樣的問題,他們可以選擇其中一個(gè)。


查看完整回答
反對(duì) 回復(fù) 2021-11-22
  • 2 回答
  • 0 關(guān)注
  • 183 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)