Làm cách nào để định dạng thời gian hiện tại bằng định dạng yyyyMMddHHmmss?


118

Tôi đang cố định dạng thời gian hiện tại bằng định dạng này yyyyMMddHHmmss.

t := time.Now()
fmt.Println(t.Format("yyyyMMddHHmmss"))

Đó là đầu ra:

yyyyMMddHHmmss

Bất kỳ đề xuất?


Đây là một sân chơi mẫu về cách hoạt động của định dạng ngày. Đây là cả hai chuyển đổi chuỗi thành thời gian và in ra một thời gian ở một định dạng cụ thể. play.golang.org/p/qK6_9KNJNx
Nitesh

Câu trả lời:


241

Sử dụng

fmt.Println(t.Format("20060102150405"))

vì Go sử dụng các hằng số sau để định dạng ngày tháng, hãy tham khảo tại đây

const (
    stdLongMonth      = "January"
    stdMonth          = "Jan"
    stdNumMonth       = "1"
    stdZeroMonth      = "01"
    stdLongWeekDay    = "Monday"
    stdWeekDay        = "Mon"
    stdDay            = "2"
    stdUnderDay       = "_2"
    stdZeroDay        = "02"
    stdHour           = "15"
    stdHour12         = "3"
    stdZeroHour12     = "03"
    stdMinute         = "4"
    stdZeroMinute     = "04"
    stdSecond         = "5"
    stdZeroSecond     = "05"
    stdLongYear       = "2006"
    stdYear           = "06"
    stdPM             = "PM"
    stdpm             = "pm"
    stdTZ             = "MST"
    stdISO8601TZ      = "Z0700"  // prints Z for UTC
    stdISO8601ColonTZ = "Z07:00" // prints Z for UTC
    stdNumTZ          = "-0700"  // always numeric
    stdNumShortTZ     = "-07"    // always numeric
    stdNumColonTZ     = "-07:00" // always numeric
)

56
về mặt thực tế, định dạng golang rất lạ. tại sao không sử dụng phong cách yyyymmddHHiiss, mà sử dụng "" 2006/01/02/15/04/05 ", tôi không hiểu lý do thực sự
Kewin

11
Chuỗi bố cục là đại diện của dấu thời gian, 2 tháng 1 15:04:05 2006 MST. Một cách dễ dàng để nhớ giá trị này là giá trị này chứa, khi được trình bày theo thứ tự này, các giá trị (được xếp cùng với các phần tử ở trên): 1 2 3 4 5 6 -7 Từ golang.org/src/time/example_test.go
kakilangit

28
Kỹ thuật ghi nhớ cho những người bên ngoài Hoa Kỳ: hãy tìm xem bạn đang làm gì vào ngày 2 tháng 1 năm 2006, chỉ năm giây sau 15:04, nhưng hãy tưởng tượng nó xảy ra ở Burkina Faso (UTC -7). Thời gian tiếp theo bạn cần phải định dạng một ngày, chỉ cần nhớ sự kiện đặc biệt này (!)
Enrico

3
Tôi không biết ghi nhớ tuần tự, tiện dụng, nhưng đến ngày tại sao nó không phải là ngày 01 tháng 2 ...
silasdavis

4
Vì vậy, tất cả những gì tôi phải nhớ, là sắp xếp ngày theo thứ tự tháng-ngày-năm, sau đó dán thời gian vào giữa nó và đặt múi giờ sau năm, và nó trở nên siêu dễ nhớ. Khéo léo. Có ai có ghi nhớ vì đã nhớ thứ tự của ghi nhớ này không ..?
Joey Sabey

20

Câu hỏi này xuất hiện trong đầu tìm kiếm của Google khi bạn tìm thấy "định dạng thời gian hiện tại của golang", vì vậy, đối với tất cả những người muốn sử dụng định dạng khác, hãy nhớ rằng bạn luôn có thể gọi tới:

t := time.Now()

t.Year()

t.Month()

t.Day()

t.Hour()

t.Minute()

t.Second()

Ví dụ: để nhận ngày giờ hiện tại là "YYYY-MM-DDTHH: MM: SS" (ví dụ: 2019-01-22T12: 40: 55), bạn có thể sử dụng các phương pháp này với fmt.Sprintf:

t := time.Now()
formatted := fmt.Sprintf("%d-%02d-%02dT%02d:%02d:%02d",
        t.Year(), t.Month(), t.Day(),
        t.Hour(), t.Minute(), t.Second())

Như mọi khi, hãy nhớ rằng tài liệu là nguồn học tập tốt nhất: https://golang.org/pkg/time/


4

Gói thời gian trong Golang có một số phương pháp có thể đáng xem.

Định dạng func (Thời gian)

func (t Time) Chuỗi định dạng (chuỗi bố cục) Định dạng trả về biểu diễn dạng văn bản của giá trị thời gian được định dạng theo bố cục, xác định định dạng bằng cách hiển thị thời gian tham chiếu,

Thứ Hai ngày 2 tháng 1 15:04:05 -0700 MST 2006 sẽ được hiển thị nếu đó là giá trị; nó phục vụ như một ví dụ về đầu ra mong muốn. Các quy tắc hiển thị tương tự sau đó sẽ được áp dụng cho giá trị thời gian. Các bố cục được xác định trước ANSIC, UnixDate, RFC3339 và các bố cục khác mô tả các biểu diễn chuẩn và thuận tiện của thời gian tham chiếu. Để biết thêm thông tin về các định dạng và định nghĩa thời gian tham chiếu, hãy xem tài liệu cho ANSIC và các hằng số khác được xác định bởi gói này.

Nguồn ( http://golang.org/pkg/time/#Time.Format )

Tôi cũng tìm thấy một ví dụ về xác định bố cục ( http://golang.org/src/pkg/time/example_test.go )

func ExampleTime_Format() {
        // layout shows by example how the reference time should be represented.
        const layout = "Jan 2, 2006 at 3:04pm (MST)"
        t := time.Date(2009, time.November, 10, 15, 0, 0, 0, time.Local)
        fmt.Println(t.Format(layout))
        fmt.Println(t.UTC().Format(layout))
        // Output:
    // Nov 10, 2009 at 3:00pm (PST)
        // Nov 10, 2009 at 11:00pm (UTC)
    }

4
import("time")

layout := "2006-01-02T15:04:05.000Z"
str := "2014-11-12T11:45:26.371Z"
t, err := time.Parse(layout, str)
if err != nil {
    fmt.Println(err)
}
fmt.Println(t)

cho:

>> 2014-11-12 11:45:26.371 +0000 UTC
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.