تاریخ و زمان (Date/Time)
کار با پکیج time: زمان فعلی، قالببندی، Duration و محاسبات زمانی.
پکیج time
همه امکانات زمانی Go در پکیج استاندارد time است:
import "time"
زمان فعلی
now := time.Now()
fmt.Println(now) ← 2026-08-15 10:30:00
fmt.Println(now.Year()) ← 2026
fmt.Println(now.Month()) ← August
fmt.Println(now.Day()) ← 15
fmt.Println(now.Hour()) ← 10
fmt.Println(now.Minute()) ← 30
fmt.Println(now.Weekday()) ← Saturday
قالببندی — روش جالب Go!
Go به جای YYYY-MM-DD از یک زمان مرجع استفاده میکند:
Mon Jan 2 15:04:05 MST 2006
↑ ↑ ↑ ↑ ↑ ↑ ↑
ماه روز ساعت دقیقه ثانیه سال
now := time.Now()
fmt.Println(now.Format("2006-01-02")) ← 2026-08-15
fmt.Println(now.Format("15:04")) ← 10:30
fmt.Println(now.Format("2006/01/02 15:04:05")) ← 2026/08/15 10:30:00
fmt.Println(now.Format("Monday, January 2")) ← Saturday, August 15
ترفند حفظ کردن: عددش میشود 1 2 3 4 5 6 — ماه ۱، روز ۲، ساعت ۳، دقیقه ۴، ثانیه ۵، سال ۶!
ساخت زمان مشخص
date := time.Date(2026, time.August, 15, 10, 30, 0, 0, time.UTC)
Duration — بازه زمانی
var d time.Duration = 5 * time.Second
fmt.Println(d) ← 5s
fmt.Println(d.Hours()) ← 0.0013...
fmt.Println(d.Minutes()) ← 0.0833...
fmt.Println(d.Seconds()) ← 5
ثابتهای Duration
time.Nanosecond ← ns
time.Microsecond ← µs
time.Millisecond ← ms
time.Second ← s
time.Minute ← m
time.Hour ← h
محاسبات زمانی
start := time.Date(2026, 1, 1, 0, 0, 0, 0, time.UTC)
end := time.Date(2026, 12, 31, 0, 0, 0, 0, time.UTC)
diff := end.Sub(start) ← فاصله
fmt.Println(diff.Hours() / 24) ← 364 روز
// افزودن زمان
tomorrow := time.Now().AddDate(0, 0, 1) ← فردا
nextHour := time.Now().Add(time.Hour) ← یک ساعت بعد
مقایسه زمانها
t1 := time.Now()
t2 := t1.Add(time.Hour)
fmt.Println(t1.Before(t2)) ← true
fmt.Println(t1.After(t2)) ← false
fmt.Println(t1.Equal(t1)) ← true
Unix Timestamp
now := time.Now()
fmt.Println(now.Unix()) ← ثانیه از ۱۹۷۰
fmt.Println(now.UnixMilli()) ← میلیثانیه
ts := time.Unix(1760000000, 0) ← تبدیل به زمان
fmt.Println(ts)
این مبحث بخشی از دوره آموزش کامل گو است.