2014-12-29 19 views
12

Làm cách nào để tính số ngày giữa hai ngày? Trong đoạn code dưới đây tôi sẽ nhận được số giờ, có nghĩa là tôi chỉ nên chia cho 24. Tuy nhiên, kết quả tôi nhận được là một cái gì đó như -44929.000000. Tôi chỉ tìm kiếm một hoặc hai ngày để tôi mong đợi 24 hoặc 48 giờ.Tính toán số ngày giữa hai ngày?

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()) 
} 

Dưới đây là mã Go thực thi: http://play.golang.org/p/1MV6wnLVKh

Trả lời

10

chương trình của bạn dường như làm việc như dự định. Tôi nhận được 45,55 giờ. Bạn đã thử chạy nó cục bộ chưa?

Thời gian sân chơi là cố định, time.Now() sẽ luôn cung cấp cho bạn 2009-11-10 23:00:00 +0000 UTC luôn.

+1

Ouch. Tôi từng biết điều đó. Tôi đã không sử dụng Go trong một thời gian. Cảm ơn. – h4labs

+0

Điều này vẫn cho kết quả sai khi thay đổi tiết kiệm ánh sáng ban ngày xảy ra. a [Thời lượng] (http://golang.org/pkg/time/#Duration) chỉ biểu thị thời gian trôi qua giữa hai phiên bản dưới dạng số nano giây int64. Nó không thể được sử dụng trực tiếp để tính toán ngày mà không có lỗi hai lần một năm. Thở dài. –

4
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  

} 

Đây là mã chạy https://play.golang.org/p/Vbhh1cBKnh

Các vấn đề liên quan