Documentation
¶
Index ¶
- Constants
- Variables
- func DaysIn(y int, m ...int) int
- func IsLeapYear(y int) bool
- func IsLongYear(y int) bool
- func NewZone(name string, offset ...int) (loc *time.Location)
- func RegisterDNA(layout string)
- func Since(t Time) time.Duration
- func Until(t Time) time.Duration
- type DateTimeMilli
- type F
- type Flag
- type Formatter
- type Time
- func Aeon(t ...time.Time) Time
- func Maxmin(op string, times ...Time) Time
- func Near(op string, base Time, times ...Time) Time
- func New(y, m, d, h, mm, s int, add ...any) Time
- func Now(loc ...*time.Location) Time
- func Parse(value string, loc ...*time.Location) Time
- func ParseBy(layout string, value string, loc ...*time.Location) Time
- func ParseByE(layout string, value string, loc ...*time.Location) (Time, error)
- func ParseE(s string, loc ...*time.Location) (Time, error)
- func Unix(secs int64, loc ...*time.Location) Time
- func (t Time) AppendFormat(b []byte, layout string) []byte
- func (t Time) At(n ...int) Time
- func (t Time) AtCentury(n ...int) Time
- func (t Time) AtDay(n ...int) Time
- func (t Time) AtDecade(n ...int) Time
- func (t Time) AtHour(n ...int) Time
- func (t Time) AtMicro(n ...int) Time
- func (t Time) AtMilli(n ...int) Time
- func (t Time) AtMinute(n ...int) Time
- func (t Time) AtMonth(n ...int) Time
- func (t Time) AtNano(n ...int) Time
- func (t Time) AtQuarter(n ...int) Time
- func (t Time) AtSecond(n ...int) Time
- func (t Time) AtWeek(n ...int) Time
- func (t Time) AtWeekday(n ...int) Time
- func (t Time) AtYear(n ...int) Time
- func (t Time) Between(start, end Time, bounds ...string) bool
- func (t Time) By(d time.Duration) Time
- func (t Time) ByCentury(n ...int) Time
- func (t Time) ByDay(n ...int) Time
- func (t Time) ByDecade(n ...int) Time
- func (t Time) ByHour(n ...int) Time
- func (t Time) ByMicro(n ...int) Time
- func (t Time) ByMilli(n ...int) Time
- func (t Time) ByMinute(n ...int) Time
- func (t Time) ByMonth(n ...int) Time
- func (t Time) ByNano(n ...int) Time
- func (t Time) ByQuarter(n ...int) Time
- func (t Time) BySecond(n ...int) Time
- func (t Time) ByWeek(n ...int) Time
- func (t Time) ByYear(n ...int) Time
- func (t Time) Clock() (h, mm, s int)
- func (t Time) Compare(u Time) int
- func (t Time) Date() (int, int, int)
- func (t Time) Day() int
- func (t Time) Days() int
- func (t Time) Diff(u Time, unit string, abs ...bool) float64
- func (t Time) End(n ...int) Time
- func (t Time) EndAt(n ...int) Time
- func (t Time) EndAtCentury(n ...int) Time
- func (t Time) EndAtDay(n ...int) Time
- func (t Time) EndAtDecade(n ...int) Time
- func (t Time) EndAtHour(n ...int) Time
- func (t Time) EndAtMicro(n ...int) Time
- func (t Time) EndAtMilli(n ...int) Time
- func (t Time) EndAtMinute(n ...int) Time
- func (t Time) EndAtMonth(n ...int) Time
- func (t Time) EndAtNano(n ...int) Time
- func (t Time) EndAtQuarter(n ...int) Time
- func (t Time) EndAtSecond(n ...int) Time
- func (t Time) EndAtWeek(n ...int) Time
- func (t Time) EndAtWeekday(n ...int) Time
- func (t Time) EndAtYear(n ...int) Time
- func (t Time) EndByCentury(n ...int) Time
- func (t Time) EndByDay(n ...int) Time
- func (t Time) EndByDecade(n ...int) Time
- func (t Time) EndByHour(n ...int) Time
- func (t Time) EndByMicro(n ...int) Time
- func (t Time) EndByMilli(n ...int) Time
- func (t Time) EndByMinute(n ...int) Time
- func (t Time) EndByMonth(n ...int) Time
- func (t Time) EndByNano(n ...int) Time
- func (t Time) EndByQuarter(n ...int) Time
- func (t Time) EndBySecond(n ...int) Time
- func (t Time) EndByWeek(n ...int) Time
- func (t Time) EndByWeekday(n ...int) Time
- func (t Time) EndByYear(n ...int) Time
- func (t Time) EndCentury(n ...int) Time
- func (t Time) EndDay(n ...int) Time
- func (t Time) EndDecade(n ...int) Time
- func (t Time) EndHour(n ...int) Time
- func (t Time) EndInCentury(n ...int) Time
- func (t Time) EndInDay(n ...int) Time
- func (t Time) EndInDecade(n ...int) Time
- func (t Time) EndInHour(n ...int) Time
- func (t Time) EndInMicro(n ...int) Time
- func (t Time) EndInMilli(n ...int) Time
- func (t Time) EndInMinute(n ...int) Time
- func (t Time) EndInMonth(n ...int) Time
- func (t Time) EndInNano(n ...int) Time
- func (t Time) EndInQuarter(n ...int) Time
- func (t Time) EndInSecond(n ...int) Time
- func (t Time) EndInWeek(n ...int) Time
- func (t Time) EndInWeekday(n ...int) Time
- func (t Time) EndInYear(n ...int) Time
- func (t Time) EndMicro(n ...int) Time
- func (t Time) EndMilli(n ...int) Time
- func (t Time) EndMinute(n ...int) Time
- func (t Time) EndMonth(n ...int) Time
- func (t Time) EndNano(n ...int) Time
- func (t Time) EndQuarter(n ...int) Time
- func (t Time) EndSecond(n ...int) Time
- func (t Time) EndWeek(n ...int) Time
- func (t Time) EndWeekday(n ...int) Time
- func (t Time) EndYear(n ...int) Time
- func (t Time) Eq(u Time) bool
- func (t Time) Format(layout string) string
- func (t Time) Go(n ...int) Time
- func (t Time) GoCentury(n ...int) Time
- func (t Time) GoDay(n ...int) Time
- func (t Time) GoDecade(n ...int) Time
- func (t Time) GoHour(n ...int) Time
- func (t Time) GoMicro(n ...int) Time
- func (t Time) GoMilli(n ...int) Time
- func (t Time) GoMinute(n ...int) Time
- func (t Time) GoMonth(n ...int) Time
- func (t Time) GoNano(n ...int) Time
- func (t Time) GoQuarter(n ...int) Time
- func (t Time) GoSecond(n ...int) Time
- func (t Time) GoWeek(n ...int) Time
- func (t Time) GoWeekday(n ...int) Time
- func (t Time) GoYear(n ...int) Time
- func (t Time) Gt(u Time) bool
- func (t Time) Hour() int
- func (t Time) ISOWeek() (year, week int)
- func (t Time) InCentury(n ...int) Time
- func (t Time) InDay(n ...int) Time
- func (t Time) InDecade(n ...int) Time
- func (t Time) InHour(n ...int) Time
- func (t Time) InMicro(n ...int) Time
- func (t Time) InMilli(n ...int) Time
- func (t Time) InMinute(n ...int) Time
- func (t Time) InMonth(n ...int) Time
- func (t Time) InNano(n ...int) Time
- func (t Time) InQuarter(n ...int) Time
- func (t Time) InSecond(n ...int) Time
- func (t Time) InWeek(n ...int) Time
- func (t Time) InYear(n ...int) Time
- func (t Time) IsAM() bool
- func (t Time) IsDST() bool
- func (t Time) IsLeapYear() bool
- func (t Time) IsLongYear() bool
- func (t Time) IsSame(u Unit, target Time) bool
- func (t Time) IsWeekend() bool
- func (t Time) IsZero() bool
- func (t Time) Local() Time
- func (t Time) Location() *time.Location
- func (t Time) Lt(u Time) bool
- func (t Time) MarshalJSON() ([]byte, error)
- func (t Time) MarshalText() ([]byte, error)
- func (t Time) Micro() int
- func (t Time) Milli() int
- func (t Time) Minute() int
- func (t Time) Month() int
- func (t Time) Nano() int
- func (t Time) Round(d time.Duration) Time
- func (t *Time) Scan(value any) (err error)
- func (t Time) Second() int
- func (t Time) Start(n ...int) Time
- func (t Time) StartAt(n ...int) Time
- func (t Time) StartAtCentury(n ...int) Time
- func (t Time) StartAtDay(n ...int) Time
- func (t Time) StartAtDecade(n ...int) Time
- func (t Time) StartAtHour(n ...int) Time
- func (t Time) StartAtMicro(n ...int) Time
- func (t Time) StartAtMilli(n ...int) Time
- func (t Time) StartAtMinute(n ...int) Time
- func (t Time) StartAtMonth(n ...int) Time
- func (t Time) StartAtNano(n ...int) Time
- func (t Time) StartAtQuarter(n ...int) Time
- func (t Time) StartAtSecond(n ...int) Time
- func (t Time) StartAtWeek(n ...int) Time
- func (t Time) StartAtWeekday(n ...int) Time
- func (t Time) StartAtYear(n ...int) Time
- func (t Time) StartByCentury(n ...int) Time
- func (t Time) StartByDay(n ...int) Time
- func (t Time) StartByDecade(n ...int) Time
- func (t Time) StartByHour(n ...int) Time
- func (t Time) StartByMicro(n ...int) Time
- func (t Time) StartByMilli(n ...int) Time
- func (t Time) StartByMinute(n ...int) Time
- func (t Time) StartByMonth(n ...int) Time
- func (t Time) StartByNano(n ...int) Time
- func (t Time) StartByQuarter(n ...int) Time
- func (t Time) StartBySecond(n ...int) Time
- func (t Time) StartByWeek(n ...int) Time
- func (t Time) StartByWeekday(n ...int) Time
- func (t Time) StartByYear(n ...int) Time
- func (t Time) StartCentury(n ...int) Time
- func (t Time) StartDay(n ...int) Time
- func (t Time) StartDecade(n ...int) Time
- func (t Time) StartHour(n ...int) Time
- func (t Time) StartInCentury(n ...int) Time
- func (t Time) StartInDay(n ...int) Time
- func (t Time) StartInDecade(n ...int) Time
- func (t Time) StartInHour(n ...int) Time
- func (t Time) StartInMicro(n ...int) Time
- func (t Time) StartInMilli(n ...int) Time
- func (t Time) StartInMinute(n ...int) Time
- func (t Time) StartInMonth(n ...int) Time
- func (t Time) StartInNano(n ...int) Time
- func (t Time) StartInQuarter(n ...int) Time
- func (t Time) StartInSecond(n ...int) Time
- func (t Time) StartInWeek(n ...int) Time
- func (t Time) StartInWeekday(n ...int) Time
- func (t Time) StartInYear(n ...int) Time
- func (t Time) StartMicro(n ...int) Time
- func (t Time) StartMilli(n ...int) Time
- func (t Time) StartMinute(n ...int) Time
- func (t Time) StartMonth(n ...int) Time
- func (t Time) StartNano(n ...int) Time
- func (t Time) StartQuarter(n ...int) Time
- func (t Time) StartSecond(n ...int) Time
- func (t Time) StartWeek(n ...int) Time
- func (t Time) StartWeekday(n ...int) Time
- func (t Time) StartYear(n ...int) Time
- func (t Time) String() string
- func (t Time) Sub(u Time) time.Duration
- func (t Time) Time() time.Time
- func (t Time) To(loc *time.Location) Time
- func (t Time) ToString(f ...string) string
- func (t Time) Truncate(d time.Duration) Time
- func (t Time) UTC() Time
- func (t Time) Unix(n ...int) int64
- func (t *Time) UnmarshalJSON(b []byte) (err error)
- func (t *Time) UnmarshalText(data []byte) error
- func (t Time) Value() (driver.Value, error)
- func (t Time) Weekday() time.Weekday
- func (t Time) WithWeekStarts(w time.Weekday) Time
- func (t Time) Year() int
- func (t Time) YearDay() int
- func (t Time) YearDays() int
- func (t Time) ZeroOr(u Time) Time
- func (t Time) Zone() (name string, offset int)
- type Unit
Constants ¶
const ( ISO = flagSign | (1 << 0) // ISO 周标志 Ord = flagSign | (1 << 1) // Ord 周标志 Full = flagSign | (1 << 2) // Full 周标志 // Overflow 允许月份溢出标志 Overflow = flagSign | (1 << 3) // ABS 绝对时间标志 (内部使用) ABS = flagSign | (1 << 4) )
const ( Local = "Local" // 本地时间 UTC = "UTC" // 协调世界时间 CET = "CET" // 中欧标准时间 EET = "EET" // 东欧标准时间 EST = "EST" // 东部标准时间 GMT = "GMT" // 格林尼治标准时间 MET = "MET" // 中欧时间 MST = "MST" // 山地标准时间 WET = "WET" // 西欧标准时间 Cuba = "Cuba" // 古巴 Egypt = "Egypt" // 埃及 Eire = "Eire" // 爱尔兰 Greenwich = "Greenwich" // 格林尼治 Iceland = "Iceland" // 冰岛 Iran = "Iran" // 伊朗 Israel = "Israel" // 以色列 Jamaica = "Jamaica" // 牙买加 Japan = "Japan" // 日本 Libya = "Libya" // 利比亚 Poland = "Poland" // 波兰 Portugal = "Portugal" // 葡萄牙 PRC = "PRC" // 中国 Singapore = "Singapore" // 新加坡 Turkey = "Turkey" // 土耳其 Shanghai = "Asia/Shanghai" // 上海 Chongqing = "Asia/Chongqing" // 重庆 Harbin = "Asia/Harbin" // 哈尔滨 Urumqi = "Asia/Urumqi" // 乌鲁木齐 HongKong = "Asia/Hong_Kong" // 香港 Macao = "Asia/Macao" // 澳门 Taipei = "Asia/Taipei" // 台北 Tokyo = "Asia/Tokyo" // 东京 HoChiMinh = "Asia/Ho_Chi_Minh" // 胡志明市 Hanoi = "Asia/Hanoi" // 河内 Saigon = "Asia/Saigon" // 西贡 (胡志明市) Seoul = "Asia/Seoul" // 首尔 Pyongyang = "Asia/Pyongyang" // 平壤 Bangkok = "Asia/Bangkok" // 曼谷 Dubai = "Asia/Dubai" // 迪拜 Qatar = "Asia/Qatar" // 卡塔尔 Bangalore = "Asia/Bangalore" // 班加罗尔 Kolkata = "Asia/Kolkata" // 加尔各答 Mumbai = "Asia/Mumbai" // 孟买 MexicoCity = "America/Mexico_City" // 墨西哥城 NewYork = "America/New_York" // 纽约 NewYork1 = "America/New_York" // 纽约 LosAngeles = "America/Los_Angeles" // 洛杉矶 Chicago = "America/Chicago" // 芝加哥 SaoPaulo = "America/Sao_Paulo" // 圣保罗 Moscow = "Europe/Moscow" // 莫斯科 London = "Europe/London" // 伦敦 Berlin = "Europe/Berlin" // 柏林 Paris = "Europe/Paris" // 巴黎 Rome = "Europe/Rome" // 罗马 Sydney = "Australia/Sydney" // 悉尼 Melbourne = "Australia/Melbourne" // 墨尔本 Darwin = "Australia/Darwin" // 达尔文 )
时区名称常量定义 (IANA 标准)
const ( ANSIC = "Mon Jan _2 15:04:05 2006" UnixD = "Mon Jan _2 15:04:05 MST 2006" RubyD = "Mon Jan 02 15:04:05 -0700 2006" RFC822 = "02 Jan 06 15:04 MST" RFC822Z = "02 Jan 06 15:04 -0700" RFC850 = "Monday, 02-Jan-06 15:04:05 MST" RFC1123 = "Mon, 02 Jan 2006 15:04:05 MST" RFC1123Z = "Mon, 02 Jan 2006 15:04:05 -0700" RFC3339 = "2006-01-02T15:04:05Z07:00" RFC3339Ns = "2006-01-02T15:04:05.999999999Z07:00" Kitchen = "3:04PM" Stamp = "Jan _2 15:04:05" StampMilli = "Jan _2 15:04:05.000" StampMicro = "Jan _2 15:04:05.000000" StampNano = "Jan _2 15:04:05.000000000" StampNs = "Jan _2 15:04:05.999999999" // 核心布局 (DT/D 系列) DT = "2006-01-02 15:04:05" DTMilli = "2006-01-02 15:04:05.000" DTMicro = "2006-01-02 15:04:05.000000" DTNano = "2006-01-02 15:04:05.000000000" DTNs = "2006-01-02 15:04:05.999999999" DateOnly = "2006-01-02" DMilli = "2006-01-02.000" DMicro = "2006-01-02.000000" DNano = "2006-01-02.000000000" TimeOnly = "15:04:05" // 补强布局 (归一化复用版) DTFull = "2006-01-02 15:04:05.999999999 -0700 MST" DTTZ = "2006-01-02 15:04:05-07:00" DTTZShort = "2006-01-02 15:04:05-07" DTISO = "2006-01-02T15:04:05-07:00" DTPMMST = "2006-01-02 15:04:05 PM MST" DTPMShortMST = "2006-01-02 15:04:05PM MST" RFC3339Space = "2006-01-02 15:04:05Z07:00" RFC3339NsSpace = "2006-01-02 15:04:05.999999999Z07:00" // 紧凑与特殊格式 DTCompact = "20060102150405" DCompact = "20060102" TimeCompact = "150405" DTVeryShort = "2006-1-2 15:4:5" DTShort = "2006-1-2 15:4" DOnlyShort = "2006-1-2" TimeVeryShort = "15:4:5" TimeShort = "15:4" MonthD = "1-2" YearOnly = "2006" // 从 Carbon 补强的高价值布局 DTCompactTZ = "20060102150405-07:00" DTCompactZ = "20060102150405Z07:00" DTCompactMilli = "20060102150405.000" DHourShort = "2006-1-2 15" HourOnly = "15" DMonth = "2006-1" FormattedD = "Jan 2, 2006" FormattedDayD = "Mon, Jan 2, 2006" DayDateTime = "Mon, Jan 2, 2006 3:04 PM" Cookie = "Monday, 02-Jan-2006 15:04:05 MST" Http = "Mon, 02 Jan 2006 15:04:05 GMT" RFC1036 = "Mon, 02 Jan 06 15:04:05 -0700" RFC7231 = "Mon, 02 Jan 2006 15:04:05 MST" TimeTZShort = "15:04:05-07" DTFullVeryShort = "2006-1-2 15:4:5 -0700 MST" DTNsVeryShort = "2006-1-2 15:4:5.999999999" // ISO8601 家族 ISO8601 = "2006-01-02T15:04:05-07:00" ISO8601Ns = "2006-01-02T15:04:05.999999999-07:00" ISO8601Zulu = "2006-01-02T15:04:05Z" ISO8601ZuluNs = "2006-01-02T15:04:05.999999999Z" )
Variables ¶
var ( // DefaultWeekStarts 全局默认周起始日(默认为周一) DefaultWeekStarts = time.Monday // DefaultTimeZone Parse() 使用的默认时区 DefaultTimeZone = time.Local )
Functions ¶
func DaysIn ¶
DaysIn 返回 y 年 m 月最大天数,如果忽略 m 则返回 y 年总天数。
- 1, 3, 5, 7, 8, 10, 12 月有 31 天;4, 6, 9, 11 月有 30 天。
- 平年 2 月有 28 天,闰年 29 天。
Types ¶
type DateTimeMilli ¶
type DateTimeMilli = F[formatDateTimeMilli]
type F ¶
func (F[T]) MarshalJSON ¶
func (F[T]) MarshalText ¶
func (*F[T]) UnmarshalJSON ¶
func (*F[T]) UnmarshalText ¶
type Time ¶
type Time struct {
// contains filtered or unexported fields
}
func (Time) Between ¶
Between 判断 t 是否在 (start, end) 区间内。
可选参数 bounds 用于控制边界包含性(默认为 "="):
- "=" : 包含边界
- "!" : 不包含边界
- "[" : 包含左边界
- "]" : 包含右边界
func (Time) Diff ¶
Diff 返回 t 和 u 的时间差。
参数:
- unit: 比较单位 ("y"年, "M"月, "d"日, "h"时, "m"分, "s"秒)
- abs: 可选,为 true 时返回绝对值
func (Time) EndAtCentury ¶
func (Time) EndAtDecade ¶
func (Time) EndAtMicro ¶
func (Time) EndAtMilli ¶
func (Time) EndAtMinute ¶
func (Time) EndAtMonth ¶
func (Time) EndAtQuarter ¶
func (Time) EndAtSecond ¶
func (Time) EndAtWeekday ¶
func (Time) EndByCentury ¶
func (Time) EndByDecade ¶
func (Time) EndByMicro ¶
func (Time) EndByMilli ¶
func (Time) EndByMinute ¶
func (Time) EndByMonth ¶
func (Time) EndByQuarter ¶
func (Time) EndBySecond ¶
func (Time) EndByWeekday ¶
func (Time) EndCentury ¶
func (Time) EndInCentury ¶
func (Time) EndInDecade ¶
func (Time) EndInMicro ¶
func (Time) EndInMilli ¶
func (Time) EndInMinute ¶
func (Time) EndInMonth ¶
func (Time) EndInQuarter ¶
func (Time) EndInSecond ¶
func (Time) EndInWeekday ¶
func (Time) EndQuarter ¶
func (Time) EndWeekday ¶
func (Time) MarshalJSON ¶
func (Time) MarshalText ¶
func (Time) Round ¶
Round 返回距离当前时间最近的 "跃点"。
这个函数有点不好理解,让我来尝试解释一下: 想象在当前时间之外存在着另一个时间循环,时间轴每次移动 d,而每个 d 就是一个 "跃点"。 函数返回距离当前时间最近的那个 "跃点",如果当前时间正好位于两个 "跃点" 中间,返回指向未来的那个 "跃点"。
示例:假设当前时间是 2021-07-21 14:35:29.650
舍入到秒:t.Round(time.Second)
根据定义,时间 14:35:29.650 距离下一个跃点 14:35:30.000 最近 (只需要 350ms), 而距离上一个跃点 14:35:29.000 较远 (需要 650ms),故返回下一个跃点 14:35:30.000。
舍入分钟:t.Round(time.Minute)
时间 14:35:29.650 距离上一个跃点 14:35:00 最近(只需要 29.650s), 而距离下一个跃点 14:36:00 较远 (需要 30.350s),故返回上一个跃点 14:35:00.000。
舍入 15 分钟:t.Round(15 * time.Minute)
跃点:--- 14:00:00 --- 14:15:00 --- 14:30:00 -- t --- 14:45:00 ---
时间 14:35:29.650 处在 14:30 (上一个跃点) 和 14:45 (下一个跃点) 之间, 距离上一个跃点最近,故返回上一个跃点时间:14:30:00。
func (Time) StartAtCentury ¶
func (Time) StartAtDay ¶
func (Time) StartAtDecade ¶
func (Time) StartAtHour ¶
func (Time) StartAtMicro ¶
func (Time) StartAtMilli ¶
func (Time) StartAtMinute ¶
func (Time) StartAtMonth ¶
func (Time) StartAtNano ¶
func (Time) StartAtQuarter ¶
func (Time) StartAtSecond ¶
func (Time) StartAtWeek ¶
func (Time) StartAtWeekday ¶
func (Time) StartAtYear ¶
func (Time) StartByCentury ¶
func (Time) StartByDay ¶
func (Time) StartByDecade ¶
func (Time) StartByHour ¶
func (Time) StartByMicro ¶
func (Time) StartByMilli ¶
func (Time) StartByMinute ¶
func (Time) StartByMonth ¶
func (Time) StartByNano ¶
func (Time) StartByQuarter ¶
func (Time) StartBySecond ¶
func (Time) StartByWeek ¶
func (Time) StartByWeekday ¶
func (Time) StartByYear ¶
func (Time) StartCentury ¶
func (Time) StartDecade ¶
func (Time) StartInCentury ¶
func (Time) StartInDay ¶
func (Time) StartInDecade ¶
func (Time) StartInHour ¶
func (Time) StartInMicro ¶
func (Time) StartInMilli ¶
func (Time) StartInMinute ¶
func (Time) StartInMonth ¶
func (Time) StartInNano ¶
func (Time) StartInQuarter ¶
func (Time) StartInSecond ¶
func (Time) StartInWeek ¶
func (Time) StartInWeekday ¶
func (Time) StartInYear ¶
func (Time) StartMicro ¶
func (Time) StartMilli ¶
func (Time) StartMinute ¶
func (Time) StartMonth ¶
func (Time) StartQuarter ¶
func (Time) StartSecond ¶
func (Time) StartWeekday ¶
func (Time) Truncate ¶
Truncate 返回最接近当前时间但不超过它的 "跃点"(向过去截断)。
与 Round 的区别:
- Round 会选择最近的跃点(可能向未来舍入)
- Truncate 永远向过去截断,不进行四舍五入
可视化理解:
时间轴: ---[d1]---- t ----[d2]----[d3]----
↑
当前时间 t
无论 t 距离 d1 还是 d2 更近,Truncate 都只会返回 d1(向过去)。 如果 t 正好落在某个跃点上(如 d2),则返回 t 本身。
示例:假设当前时间是 2021-07-21 14:35:29.650
截断到秒:t.Truncate(time.Second)
直接舍弃毫秒部分,返回 14:35:29.000(向过去)。
截断到分钟:t.Truncate(time.Minute)
舍弃秒和毫秒部分,返回 14:35:00.000(向过去)。
截断到 15 分钟:t.Truncate(15 * time.Minute)
跃点:--- 14:00:00 --- 14:15:00 --- 14:30:00 ---- t ---- 14:45:00 --- ↑ 当前时间 14:35:29.650
返回上一个跃点:14:30:00.000(向过去)。
func (Time) Unix ¶
Unix 返回时间戳,可选择指定精度。
参数 n (可选) 指定返回的时间戳精度:
- 不提供或 0: 秒级 (10位)
- 3: 毫秒级 (13位)
- 6: 微秒级 (16位)
- 9: 纳秒级 (19位)
- 其他值: 对应位数的时间戳
func (*Time) UnmarshalJSON ¶
func (*Time) UnmarshalText ¶
func (Time) WithWeekStarts ¶
WithWeekStarts 返回新实例,周起始日为 w。