亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何獲得一天中的秒數

如何獲得一天中的秒數

Go
梵蒂岡之花 2023-06-12 16:32:58
如何在 Go 中獲取一天中的秒數 (1 - 86400)?更新/澄清想要相當于 golang 中的 joda/SecondOfDay預計在一天結束時從 0 和 86400 開始在 golang 中重寫一個 java 開源函數時需要,該函數又使用 joda/secondOfDay用谷歌搜索“24 小時到秒”得到 86400在提問時我只能想到 now.Unix()-yesterdayMidnight.Unix() 而我并沒有想到簡單接受的答案顯然沒有考慮夏令時想看看是否有一些內置函數或流行/標準庫
查看完整描述

2 回答

?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

如果我們將“一天中的秒數”定義為“自午夜以來經過的秒數”,那么即使在夏令時發生的日子里,為了獲得正確的結果,我們也應該從給定時間中減去代表午夜的時間。為此,我們可以使用Time.Sub().

func daySeconds(t time.Time) int {

? ? year, month, day := t.Date()

? ? t2 := time.Date(year, month, day, 0, 0, 0, 0, t.Location())

? ? return int(t.Sub(t2).Seconds())

}

測試它:


for _, t := range []time.Time{

? ? time.Date(2019, 1, 1, 0, 0, 30, 0, time.UTC),

? ? time.Date(2019, 1, 1, 0, 1, 30, 0, time.UTC),

? ? time.Date(2019, 1, 1, 0, 12, 30, 0, time.UTC),

? ? time.Date(2019, 1, 1, 12, 12, 30, 0, time.UTC),

} {

? ? fmt.Println(daySeconds(t))

}

輸出(在Go Playground上嘗試):


30

90

750

43950

讓我們看看這個函數如何在夏令時發生時給出正確的結果。在匈牙利,2018 年 3 月 25 日是時鐘02:00:00從2 am轉到1 小時的一天3 am。


loc, err := time.LoadLocation("CET")

if err != nil {

? ? fmt.Println(err)

? ? return

}


t := time.Date(2018, 3, 25, 0, 0, 30, 0, loc)

fmt.Println(t)

fmt.Println(daySeconds(t))


t = t.Add(2 * time.Hour)

fmt.Println(t)

fmt.Println(daySeconds(t))

此輸出(在Go Playground上嘗試):


2018-03-25 00:00:30 +0100 CET

30

2018-03-25 03:00:30 +0200 CEST

7230

我們打印daySeconds午夜后 30 秒的時間,這是30當然的。然后我們將時間加上 2 小時(2 小時 = 2*3600 秒 = 7200),這個daySeconds新時間的時間將是正確的7200 + 30 = 7230,即使時間更改為 3 小時。


查看完整回答
反對 回復 2023-06-12
?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

注意:?此函數返回 (0 - 86399) 范圍內一天中的標稱秒數。如果您正在尋找“自午夜以來經過的秒數”,由于夏令時可能不在 (0 - 86399) 范圍內,請參閱@icza 的回答。

它似乎對應于名義秒數實現(如我在下面的回答中)而不是“數量自午夜以來經過的秒數”(如@icza 的回答)。

package main?


import (

? ? "fmt"

? ? "time"

)


func getSecondOfDay(t time.Time) int {

? ? return 60*60*t.Hour() + 60*t.Minute() + t.Second()

}


func main() {

? ? t := time.Now()

? ? fmt.Println(getSecondOfDay(t))

}


查看完整回答
反對 回復 2023-06-12
  • 2 回答
  • 0 關注
  • 275 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號