如何计算两个日期之间的天数?在下面的代码中,我应该得到小时数,这意味着我只需要除以24.但是,我得到的结果是 -44929.000000 。我只看了一两天,所以我期望24或48小时。
package main
import (
"fmt"
"time"
)
func main() {
timeFormat := "2006-01-02"
t, _ := time.Parse(timeFormat, "2014-12-28")
fmt.Println(t)
// duration := time.Since(t)
duration := time.Now().Sub(t)
fmt.Printf("%f", duration.Hours())
}
这是可执行的Go代码:http://play.golang.org/p/1MV6wnLVKh
答案 0 :(得分:13)
您的程序似乎按预期工作。我得到45.55小时。你试过在本地运行吗?
游乐场时间是固定的,time.Now()总会给你2009-11-10 23:00:00 +0000 UTC。
答案 1 :(得分:8)
package main
import (
"fmt"
"time"
)
func main() {
date := time.Now()
fmt.Println(date)
format := "2006-01-02 15:04:05"
then,_ := time.Parse(format, "2007-09-18 11:58:06")
fmt.Println(then)
diff := date.Sub(then)
//func Since(t Time) Duration
//Since returns the time elapsed since t.
//It is shorthand for time.Now().Sub(t).
fmt.Println(diff.Hours())// number of Hours
fmt.Println(diff.Nanoseconds())// number of Nanoseconds
fmt.Println(diff.Minutes())// number of Minutes
fmt.Println(diff.Seconds())// number of Seconds
fmt.Println(int(diff.Hours()/24))// number of days
}
以下是正在运行的代码https://play.golang.org/p/Vbhh1cBKnh
答案 2 :(得分:0)
以下代码提供了所有日期的列表以及从日期到日期之间的天数: 您可以单击代码中的链接 前往PlayGround:https://play.golang.org/p/MBThBpTqjdz
to := time.Now()
from := to.AddDate(0, -1, 0)
fmt.Println("toDate", to)
fmt.Println("fromDate", from)
days := to.Sub(from) / (24 * time.Hour)
fmt.Println("days", int(days))
noofdays := int(days)
for i := 0; i <= noofdays; i++ {
fmt.Println(from.AddDate(0, 0, i))
}
答案 3 :(得分:0)
使用timeOne.Sub(timeTwo).Hours() / 24
这项技术时要注意的一个注意事项是,夏令时可能导致一天只包含23小时,因此将计算结果稍作改动。