计算两个日期之间的天数?

时间:2014-12-29 21:30:17

标签: time go

如何计算两个日期之间的天数?在下面的代码中,我应该得到小时数,这意味着我只需要除以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

4 个答案:

答案 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小时,因此将计算结果稍作改动。