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

h4l*_*abs 16 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())
}
Run Code Online (Sandbox Code Playgroud)

这是可执行的Go代码:http://play.golang.org/p/1MV6wnLVKh

sir*_*nga 13

您的程序似乎按预期工作.我快45.55小时了.你试过在本地运行吗?

游乐场时间是固定的,time.Now()总会给你2009-11-10 23:00:00 +0000 UTC.

  • 哎哟.我曾经知道这一点.我有一段时间没用过Go.谢谢. (2认同)
  • 当夏令时变化发生时,这仍然会产生错误的结果.a [持续时间](http://golang.org/pkg/time/#Duration)仅表示两个时刻之间经过的时间为int64纳秒计数.它不能直接用于计算每年两次没有错误的天数.叹. (2认同)

Nis*_*Edu 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    

}
Run Code Online (Sandbox Code Playgroud)

这是运行代码https://play.golang.org/p/Vbhh1cBKnh