2014-05-23 13 views
20

Tôi đang làm việc lần đầu tiên trên Go, trong trường hợp này tôi có chuỗi có định dạng UTC, tôi muốn biết, làm cách nào để có được sự khác biệt về giờ giữa ngày của tôi và bây giờ. Đây là chuỗi của tôi hiện tạiGo, nhận chênh lệch giờ giữa hai ngày

v := "2014-05-03 20:57 UTC" 

Trả lời

50

Sử dụng time.Parsetime.Since:

package main 

import (
    "fmt" 
    "time" 
) 

const (
    // See http://golang.org/pkg/time/#Parse 
    timeFormat = "2006-01-02 15:04 MST" 
) 

func main() { 
    v := "2014-05-03 20:57 UTC" 
    then, err := time.Parse(timeFormat, v) 
    if err != nil { 
     fmt.Println(err) 
     return 
    } 
    duration := time.Since(then) 
    fmt.Println(duration.Hours()) 
} 
+0

Tôi không chắc tại sao đầu ra là âm có vẻ sai. –

+0

@James rất có thể là thời gian trong tương lai hoặc đồng hồ hệ thống là sai. – user634175

+2

i xấu của tôi đã được kiểm tra trong goplayground và Trong sân chơi thời gian bắt đầu lúc 2009-11-10 23:00:00 UTC (xác định tầm quan trọng của ngày này là một bài tập cho người đọc). Điều này làm cho nó dễ dàng hơn để lưu trữ các chương trình bằng cách cho chúng đầu ra xác định. –

19

Có một cái nhìn tại time package.

package main 

import "fmt" 
import "time" 

func main() { 
    a, err := time.Parse("2006-01-02 15:04 MST", "2014-05-03 20:57 UTC") 
    if err != nil { 
     // ... 
     return 
    } 

    delta := time.Now().Sub(a) 
    fmt.Println(delta.Hours()) 
} 
+3

Trong khi 'time.Since' thực sự sử dụng' Sub' nội bộ, tôi muốn sử dụng 'Since'. Ít đánh máy hơn, tốt hơn để đọc. – nemo

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