Подтвердить что ты не робот

Рассчитать количество дней между двумя датами?

Как рассчитать количество дней между двумя датами? В приведенном ниже коде я должен получить количество часов, а это значит, что мне нужно будет только делить на 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

4b9b3361

Ответ 1

Ваша программа работает по назначению. Я получаю 45,55 часа. Вы пытались запустить его локально?

Время на игровой площадке фиксировано, time.Now() даст вам 2009-11-10 23:00:00 +0000 UTC всегда.

Ответ 2

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