วิธีจัดรูปแบบเวลาปัจจุบันโดยใช้รูปแบบ yyyyMMddHHmmss?


120

ฉันกำลังพยายามจัดรูปแบบเวลาปัจจุบันโดยใช้รูปแบบyyyyMMddHHmmssนี้

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

นั่นคือผลลัพธ์:

yyyyMMddHHmmss

ข้อเสนอแนะใด ๆ ?


นี่คือตัวอย่างสนามเด็กเล่นของการจัดรูปแบบวันที่ นี่เป็นการแปลงสตริงเป็นเวลาและพิมพ์เวลาในรูปแบบเฉพาะ play.golang.org/p/qK6_9KNJNx
Nitesh

คำตอบ:


244

ใช้

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

เนื่องจาก Go ใช้ค่าคงที่ต่อไปนี้ในการจัดรูปแบบวันที่โปรดดูที่นี่

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
)

57
รูปแบบ golang นั้นแปลกมาก ทำไมไม่ใช้สไตล์ yyyymmddHHiiss แต่ใช้ "" 2006/01/02/15/04/05 "ฉันยังไม่เข้าใจเหตุผลที่แท้จริง
Kewin

11
สตริงโครงร่างเป็นตัวแทนของการประทับเวลา 2 มกราคม 15:04:05 น. 2006 MST วิธีง่ายๆในการจำค่านี้คือเก็บค่าไว้เมื่อนำเสนอตามลำดับนี้ค่า (เรียงตามองค์ประกอบด้านบน): 1 2 3 4 5 6 -7 จากgolang.org/src/time/example_test.go
kakilangit

28
เทคนิคช่วยในการจำสำหรับผู้ที่อยู่นอกสหรัฐอเมริกา: ลองนึกดูว่าคุณกำลังทำอะไรในวันที่ 2 มกราคม 2549 เพียง 5 วินาทีหลังจากเวลา 15:04 น. แต่ลองนึกดูว่ามันเกิดขึ้นในบูร์กินาฟาโซ (UTC -7) ครั้งต่อไปที่คุณต้องจัดรูปแบบวันที่โปรดจำเหตุการณ์นี้โดยเฉพาะ (!)
Enrico

3
ฉันไม่รู้ว่าการจำตามลำดับมีประโยชน์ แต่มาทำไมมันไม่ใช่วันที่ 1 กุมภาพันธ์ ...
silasdavis

4
ดังนั้นสิ่งที่ฉันต้องจำก็คือการจัดเรียงวันที่ตามลำดับเดือนวันปีจากนั้นใส่เวลาไว้ตรงกลางและใส่เขตเวลาหลังจากปีและมันจะจำง่ายสุด ๆ เรียบร้อย. ใครมีวิธีช่วยจำในการจำลำดับของการช่วยจำนี้ .. ?
Joey Sabey

20

คำถามนี้อยู่ในอันดับต้น ๆ ของการค้นหาของ Google เมื่อคุณพบ "รูปแบบเวลาปัจจุบันของโกแลง" ดังนั้นสำหรับทุกคนที่ต้องการใช้รูปแบบอื่นโปรดจำไว้ว่าคุณสามารถโทรไปที่:

t := time.Now()

t.Year()

t.Month()

t.Day()

t.Hour()

t.Minute()

t.Second()

ตัวอย่างเช่นหากต้องการรับวันที่เวลาปัจจุบันเป็น "YYYY-MM-DDTHH: MM: SS" (เช่น 2019-01-22T12: 40: 55) คุณสามารถใช้วิธีการเหล่านี้กับ 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())

เช่นเคยโปรดจำไว้ว่าเอกสารเป็นแหล่งการเรียนรู้ที่ดีที่สุด: https://golang.org/pkg/time/


4

แพ็กเกจเวลาใน Golang มีวิธีการบางอย่างที่อาจคุ้มค่า

func (เวลา) รูปแบบ

func (t Time) รูปแบบสตริง (สตริงโครงร่าง) รูปแบบส่งกลับการแสดงข้อความของค่าเวลาที่จัดรูปแบบตามเค้าโครงซึ่งกำหนดรูปแบบโดยแสดงว่าเวลาอ้างอิงเป็นอย่างไร

จันทร์ 2 ม.ค. 15:04:05 น. -0700 MST 2006 จะแสดงขึ้นถ้าเป็นค่านี้ ทำหน้าที่เป็นตัวอย่างของผลลัพธ์ที่ต้องการ จากนั้นกฎการแสดงผลเดียวกันจะถูกนำไปใช้กับค่าเวลา เค้าโครงที่กำหนดไว้ล่วงหน้า ANSIC, UnixDate, RFC3339 และอื่น ๆ อธิบายการแสดงเวลาอ้างอิงที่เป็นมาตรฐานและสะดวก สำหรับข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบและคำจำกัดความของเวลาอ้างอิงโปรดดูเอกสารสำหรับ ANSIC และค่าคงที่อื่น ๆ ที่กำหนดโดยแพ็กเกจนี้

ที่มา ( http://golang.org/pkg/time/#Time.Format )

ฉันยังพบตัวอย่างของการกำหนดเค้าโครง ( 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)
    }

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.