Lấy thời gian hiện tại dưới dạng chuỗi được định dạng trong Go?


Câu trả lời:


149

Sử dụng time.Now()hàm và time.Format()phương thức.

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

in ra 20110504111515, hoặc ít nhất là nó đã làm một vài phút trước đây. (Tôi đang ở Giờ ban ngày miền Đông.) Có một số định dạng thời gian được xác định trước trong các hằng số được xác định trong gói thời gian.

Bạn có thể sử dụng time.Now().UTC()nếu bạn muốn có UTC hơn múi giờ địa phương.


15
Tôi chắc chắn thích Kitchenhằng số ( = "3:04PM")
tux21b

5
Cảm ơn thông tin đó. Làm thế nào để gói thời gian biết được thông qua "20060102150405", chỉ là những gì chúng ta đang vượt qua, vì nó không phải là một trong các hằng số được xác định trước trong gói thời gian? Tầm quan trọng của ngày và thời gian đó trong gói thời gian (20060102150405) là gì? Nó có vẻ hơi kỳ quặc đối với tôi, nhưng miễn là nó hoạt động tôi cho rằng nó không thành vấn đề miễn là chúng ta không mắc lỗi khi mã hóa nó. Tôi đoán họ không thấy phù hợp để cung cấp một hằng số cho định dạng đó và khớp với mẫu chuỗi.
brianoh

9
@brianoh: Xem golang.org/pkg/time/#Constants Đó là thời gian "01/02 03:04:05 PM '06 -0700" Bởi vì mỗi thành phần có một số khác nhau (1, 2, 3, v.v.), nó có thể xác định từ những con số thành phần bạn muốn.
newacct

1
Xin lưu ý rằng time.LocalTime () không còn tồn tại nữa: xem câu trả lời của tôi bên dưới để tương thích với Go 1.0.3
Deleplace

71

Tất cả các phản hồi khác đều rất sai lầm đối với ai đó đến từ google và đang tìm kiếm "dấu thời gian đang hoạt động"! YYYYMMDDhhmmss không phải là "dấu thời gian".

Để có được "dấu thời gian" của một ngày đang đi (số giây từ tháng một năm 1970), hàm chính xác là .Unix () và nó thực sự trả về một số nguyên


8
Tôi đồng ý; câu hỏi nên có tiêu đề "ngày hiện tại" chứ không phải "dấu thời gian hiện tại"
nhà phát triển xe máy

1
Mặc dù đã muộn nhưng tôi nghĩ .Unix () nên trỏ đến golang.org/pkg/time/#Time.Unix có loại trả về là int64.
sinh

Mặc dù bạn đúng về mặt kỹ thuật, tôi nghĩ rằng rất nhiều lập trình viên ngày nay đã gắn dấu thời gian với 'Thời gian hiện tại trong một số loại thời trang được định dạng', do đó, tiêu đề sẽ gây nhầm lẫn không kém cho hầu hết.
Roger Hill

Tôi đã đề nghị chỉnh sửa - Get current time as formatted string in Go?. Hy vọng ai đó sẽ phê duyệt nó.
akki


32

Sử dụng các hàm time.Now ()time.Format () (như time.LocalTime () không còn tồn tại nữa kể từ Go 1.0.3)

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

Bản demo trực tuyến (với ngày cố định trong quá khứ trong sân chơi, đừng bận tâm)


6
Và bạn có thể sử dụng nó đơn giản như một chuỗi như thế này:s := "Actual time is: "+time.Now().String()
Michael


2

Như một tiếng vang cho phản hồi của @ Bactisme, cách người ta sẽ đi về việc lấy dấu thời gian hiện tại (ví dụ tính bằng mili giây) là:

msec := time.Now().UnixNano() / 1000000

Tài nguyên: https://gobyexample.com/epoch


0

https://golang.org/src/time/format.go được chỉ định Đối với thời gian phân tích cú pháp 15được sử dụng cho Giờ, 04được sử dụng trong vài phút, 05trong vài giây.

Đối với phân tích gia 11, Jan, Januarylà trong nhiều tháng, 02, Mon, Mondaycho ngày của tháng, 2006năm và tất nhiên MSTcho khu vực

Nhưng bạn có thể sử dụng bố cục này là tốt, mà tôi thấy rất đơn giản. "Mon Jan 2 15:04:05 MST 2006"

    const layout = "Mon Jan 2 15:04:05 MST 2006"
    userTimeString := "Fri Dec 6 13:05:05 CET 2019"

    t, _ := time.Parse(layout, userTimeString)
    fmt.Println("Server: ", t.Format(time.RFC850))
    //Server:  Friday, 06-Dec-19 13:05:05 CET

    mumbai, _ := time.LoadLocation("Asia/Kolkata")
    mumbaiTime := t.In(mumbai)
    fmt.Println("Mumbai: ", mumbaiTime.Format(time.RFC850))
    //Mumbai:  Friday, 06-Dec-19 18:35:05 IST

BẢN GIỚI THIỆU


-4

Để trả lời chính xác câu hỏi:

import "github.com/golang/protobuf/ptypes"

Timestamp, _ = ptypes.TimestampProto(time.Now())

Cảm ơn Suran, điều này rất hữu ích khi dấu thời gian cần được gửi qua grpc
rajeshk
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.