Go by Example: Time Formatting / Parsing

Go hỗ trợ định dạng và phân tích thời gian thông qua các layout dựa trên patterns.

package main
import (
    "fmt"
    "time"
)
func main() {
    p := fmt.Println

Dưới đây là một ví dụ cơ bản về định dạng thời gian theo RFC3339, sử dụng hằng số layout tương ứng.

    t := time.Now()
    p(t.Format(time.RFC3339))

Phân tích thời gian sử dụng cùng các giá trị layout với Format.

    t1, e := time.Parse(
        time.RFC3339,
        "2012-11-01T22:08:41+00:00")
    p(t1)

FormatParse sử dụng các layout dựa trên ví dụ. Thông thường bạn sẽ sử dụng một hằng số từ package time cho các layout này, nhưng bạn cũng có thể cung cấp các layout tùy chỉnh. Các layout phải sử dụng thời gian tham chiếu Mon Jan 2 15:04:05 MST 2006 để hiển thị pattern dùng để định dạng/ phân tích một đối tượng time/chuỗi thời gian cho trước. Thời gian được dùng làm ví dụ phải chính xác như sau: năm 2006, 15 cho giờ, Monday cho ngày trong tuần, v.v.

    p(t.Format("3:04PM"))
    p(t.Format("Mon Jan _2 15:04:05 2006"))
    p(t.Format("2006-01-02T15:04:05.999999-07:00"))
    form := "3 04 PM"
    t2, e := time.Parse(form, "8 41 PM")
    p(t2)

Để biểu diễn theo dạng số, bạn cũng có thể sử dụng chuỗi định dạng chuẩn với các thành phần được trích xuất từ giá trị thời gian.

    fmt.Printf("%d-%02d-%02dT%02d:%02d:%02d-00:00\n",
        t.Year(), t.Month(), t.Day(),
        t.Hour(), t.Minute(), t.Second())

Parse sẽ trả về một lỗi khi đầu vào bị lỗi để giải thích vấn đề khi phân tích thời gian.

    ansic := "Mon Jan _2 15:04:05 2006"
    _, e = time.Parse(ansic, "8:41PM")
    p(e)
}
$ go run time-formatting-parsing.go 
2014-04-15T18:00:15-07:00
2012-11-01 22:08:41 +0000 +0000
6:00PM
Tue Apr 15 18:00:15 2014
2014-04-15T18:00:15.161182-07:00
0000-01-01 20:41:00 +0000 UTC
2014-04-15T18:00:15-00:00
parsing time "8:41PM" as "Mon Jan _2 15:04:05 2006": ...

Ví dụ tiếp theo: Random Numbers.