พื้นฐานแพ็กเกจ time
ใช้งานเวลา ช่วงเวลา และการจัดรูปแบบ
พื้นฐานแพ็กเกจ time เป็นบทเรียน Go Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Go Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
time.Time — ชนิดข้อมูลหลัก
ชนิดข้อมูลหลักของแพ็กเกจ time คือ time.Time รับเวลาปัจจุบันด้วย time.Now():
package main
import ("fmt"; "time")
func main() {
now := time.Now()
fmt.Println(now) // 2024-01-15 10:30:00.123456789 +0000 UTC
fmt.Println(now.Year()) // 2024
fmt.Println(now.Month()) // January
fmt.Println(now.Day()) // 15
fmt.Println(now.Hour()) // 10
fmt.Println(now.Minute()) // 30
fmt.Println(now.Weekday()) // Monday
}time.Duration
time.Duration ใช้แทนระยะเวลาที่ผ่านไปในหน่วยนาโนวินาที ควรใช้ค่าคงที่ที่มีชนิดข้อมูลเพื่อให้อ่านได้ง่าย:
package main
import ("fmt"; "time")
func main() {
d := 2*time.Hour + 30*time.Minute + 15*time.Second
fmt.Println(d) // 2h30m15s
fmt.Println(d.Hours()) // 2.504166...
fmt.Println(d.Minutes()) // 150.25
fmt.Println(d.Seconds()) // 9015
fmt.Println(d.Milliseconds()) // 9015000
}time.Add และ time.Sub
เพิ่มระยะเวลาให้กับเวลา หรือลบเวลาสองค่าเพื่อหาระยะเวลา:
package main
import ("fmt"; "time")
func main() {
now := time.Now()
tomorrow := now.Add(24 * time.Hour)
fmt.Println(tomorrow.Format("2006-01-02"))
deadline := now.Add(30 * time.Minute)
remaining := time.Until(deadline) // alias for deadline.Sub(now)
fmt.Printf("%.0f minutes left\n", remaining.Minutes())
}การจัดรูปแบบและการแยกวิเคราะห์เวลา
Go ใช้เวลาอ้างอิง Mon Jan 2 15:04:05 MST 2006 เป็นแม่แบบการจัดรูปแบบ (ค่าตั้งแต่ 1 ถึง 7 ตามลำดับ):
package main
import ("fmt"; "time")
func main() {
now := time.Now()
// Format
fmt.Println(now.Format("2006-01-02")) // 2024-01-15
fmt.Println(now.Format("02/01/2006 15:04:05")) // 15/01/2024 10:30:00
fmt.Println(now.Format(time.RFC3339)) // 2024-01-15T10:30:00Z
fmt.Println(now.Format(time.Kitchen)) // 10:30AM
}time.Parse — การแยกวิเคราะห์สตริง
แปลงสตริงเป็น time.Time โดยใช้แม่แบบเวลาอ้างอิงเดียวกัน:
package main
import ("fmt"; "time")
func main() {
s := "2024-01-15"
t, err := time.Parse("2006-01-02", s)
if err != nil {
fmt.Println("parse error:", err)
return
}
fmt.Println(t.Year(), t.Month(), t.Day()) // 2024 January 15
// Parse RFC3339 (ISO 8601):
t2, _ := time.Parse(time.RFC3339, "2024-01-15T10:30:00Z")
fmt.Println(t2)
}time.Sleep และตัวจับเวลา
หยุดการทำงานชั่วคราวด้วย time.Sleep และสร้างตัวจับเวลาแบบทำงานครั้งเดียวด้วย time.NewTimer:
package main
import ("fmt"; "time")
func main() {
start := time.Now()
time.Sleep(100 * time.Millisecond)
fmt.Printf("slept for %v\n", time.Since(start))
// One-shot timer
timer := time.NewTimer(200 * time.Millisecond)
<-timer.C // blocks until timer fires
fmt.Println("timer fired")
}time.Ticker สำหรับเหตุการณ์ที่เกิดซ้ำ
time.NewTicker จะส่งค่าผ่านช่องสัญญาณตามช่วงเวลาที่กำหนดอย่างสม่ำเสมอ:
package main
import ("fmt"; "time")
func main() {
ticker := time.NewTicker(500 * time.Millisecond)
defer ticker.Stop() // always stop to avoid goroutine leak
for i := 0; i < 3; i++ {
t := <-ticker.C
fmt.Println("tick at", t.Format("15:04:05.000"))
}
}time.Since และ time.Until
ทางลัดที่สะดวกสำหรับวัดเวลาที่ผ่านไปและเวลาที่เหลือจนกว่าจะเกิดเหตุการณ์:
package main
import ("fmt"; "time")
func benchmark(fn func()) time.Duration {
start := time.Now()
fn()
return time.Since(start) // = time.Now().Sub(start)
}
func main() {
d := benchmark(func() { time.Sleep(50 * time.Millisecond) })
fmt.Printf("took %v\n", d)
deadline := time.Now().Add(5 * time.Minute)
fmt.Printf("%.0f minutes remaining\n", time.Until(deadline).Minutes())
}เขตเวลา
Go จัดการเขตเวลาด้วย time.Location โหลดเขตเวลาด้วย time.LoadLocation:
package main
import ("fmt"; "time")
func main() {
utc := time.Now().UTC()
fmt.Println(utc)
loc, err := time.LoadLocation("America/New_York")
if err != nil { panic(err) }
nyTime := utc.In(loc)
fmt.Println(nyTime)
// Compare times — always in UTC internally
fmt.Println(utc.Equal(nyTime)) // true — same instant
}time.Unix — ค่าประทับเวลา Unix
แปลงระหว่าง time.Time กับค่าประทับเวลา Unix:
package main
import ("fmt"; "time")
func main() {
now := time.Now()
unix := now.Unix() // seconds since epoch
unixMilli := now.UnixMilli() // milliseconds
unixNano := now.UnixNano() // nanoseconds
fmt.Println(unix, unixMilli, unixNano)
// Convert back:
t := time.Unix(unix, 0)
fmt.Println(t.Format(time.RFC3339))
}ตรวจสอบความเข้าใจ
Go ใช้เวลาอ้างอิงใดเป็นแม่แบบการจัดรูปแบบ
ทบทวน: แพ็กเกจ time
สรุป:
time.Now()— เวลาปัจจุบัน ส่วนประกอบต่าง ๆ เรียกดูได้ผ่าน.Year(),.Month()เป็นต้นtime.Duration— หน่วยนาโนวินาที ให้ใช้time.Hour,time.Minuteเป็นต้นt.Format(layout)/time.Parse(layout, s)— การจัดรูปแบบใช้เวลาอ้างอิง2006-01-02 15:04:05time.Since/time.Untilสำหรับเวลาที่ผ่านไปและเวลาที่เหลือtime.NewTickerสำหรับเหตุการณ์ตามช่วงเวลา — ให้ใช้defer Stop()เสมอ
คำถามที่พบบ่อย
บทเรียน “พื้นฐานแพ็กเกจ time” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “พื้นฐานแพ็กเกจ time” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Go Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “พื้นฐานแพ็กเกจ time”
ใช้งานเวลา ช่วงเวลา และการจัดรูปแบบ คุณปฏิบัติ Go Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Go Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Go Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “พื้นฐานแพ็กเกจ time” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Go Academy นี้ได้ไหม
ได้ บทเรียน Go Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- แพ็กเกจ fmt และ strings
- strconv, math และ sort
- พื้นฐานแพ็กเกจ time
- แพ็กเกจ os และ filepath