Documentation
¶
Overview ¶
Package timex 提供常用的时间操作工具函数。
包含时间戳转换、日期格式化、时区处理、时间段边界 (BeginningOfX/EndOfX:分/时/日/周/月/季/年)等功能。
Index ¶
- func BeginningOfDay(t time.Time) time.Time
- func BeginningOfHour(t time.Time) time.Time
- func BeginningOfMinute(t time.Time) time.Time
- func BeginningOfMonth(t time.Time) time.Time
- func BeginningOfQuarter(t time.Time) time.Time
- func BeginningOfWeek(t time.Time, weekStart time.Weekday) time.Time
- func BeginningOfYear(t time.Time) time.Time
- func ConvertTimezone(datetime string, fromLoc string) (string, error)
- func Date2Stamp(date string, format string) int64
- func EndOfDay(t time.Time) time.Time
- func EndOfHour(t time.Time) time.Time
- func EndOfMinute(t time.Time) time.Time
- func EndOfMonth(t time.Time) time.Time
- func EndOfQuarter(t time.Time) time.Time
- func EndOfWeek(t time.Time, weekStart time.Weekday) time.Time
- func EndOfYear(t time.Time) time.Time
- func GetCurrentDate(format string) string
- func GetCurrentDayStartTime() int64
- func GetCurrentTime() int
- func NDateBefore(n int, isMulti bool, format string) []string
- func ParseFirst(s string, layouts ...string) (time.Time, bool)
- func StampInt2Date(timestamp int64, format string) string
- func StampString2Date(timestampStr, format string) string
- func TimestampString() string
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BeginningOfDay ¶ added in v0.7.0
BeginningOfDay 返回 t 所在日的起点(00:00:00)。
若该日的墙钟午夜不存在(DST 前跳),返回该日**首个存在瞬间**(通常 01:00)。
func BeginningOfHour ¶ added in v0.7.0
BeginningOfHour 返回 t 所在小时的起点(分/秒/纳秒归零)。
func BeginningOfMinute ¶ added in v0.7.0
BeginningOfMinute 返回 t 所在分钟的起点(秒与纳秒归零)。
func BeginningOfMonth ¶ added in v0.7.0
BeginningOfMonth 返回 t 所在月第一天(1 号)的起点。
func BeginningOfQuarter ¶ added in v0.7.0
BeginningOfQuarter 返回 t 所在自然季度首月 1 号的起点。
func BeginningOfWeek ¶ added in v0.7.0
BeginningOfWeek 返回 t 所在周的起点(00:00:00)。 weekStart 指定一周起始日,如 time.Monday。
func BeginningOfYear ¶ added in v0.7.0
BeginningOfYear 返回 t 所在年 1 月 1 日的起点。
func ConvertTimezone ¶
ConvertTimezone 将日期时间从指定时区转换为本地时区。
func Date2Stamp ¶
Date2Stamp 将日期字符串转换为 Unix 时间戳。 使用本地时区解析(time.ParseInLocation),避免 UTC 偏移问题。 解析失败时返回 0。
func EndOfDay ¶ added in v0.7.0
EndOfDay 返回 t 所在日的最后一纳秒(23:59:59.999999999)。 跨夏令时的 23/25 小时日按**墙钟日界**计算,不按固定 24h 时长。
func EndOfMinute ¶ added in v0.7.0
EndOfMinute 返回 t 所在分钟的最后一纳秒。
func EndOfMonth ¶ added in v0.7.0
EndOfMonth 返回 t 所在月最后一天的最后一纳秒。 计算基准取月初 1 号再走到下月 1 号,天然规避大小月与 闰月(2 月 28/29 日)的日期归一化陷阱。
func EndOfQuarter ¶ added in v0.7.0
EndOfQuarter 返回 t 所在自然季度最后一日的最后一纳秒。
func GetCurrentDate ¶
GetCurrentDate 返回当前日期字符串,默认格式为 "2006-01-02"。
func GetCurrentDayStartTime ¶
func GetCurrentDayStartTime() int64
GetCurrentDayStartTime 返回今天 00:00:00 的 Unix 时间戳。
func NDateBefore ¶
NDateBefore 获取前 n 天的日期列表。 isMulti 为 true 时返回前 n 天每一天的日期,否则只返回第 n 天的日期。
func ParseFirst ¶ added in v0.37.0
ParseFirst 按序尝试 layouts,**首个成功即返回**;全部失败返回零值与 false(#197)。
面向「同一时间字段在多上游/多端点格式不一」的归一化场景——layout 列表 是该字段的服务端方言记录(如里程碑 due_on:GitCode 回显 RFC3339 与 日期-only 并存、Gitee 另有 "2006-01-02 15:04:05" wire 形),按序尝试、 首命中即返回(列表本身就是优先序),不该每个消费方重写一遍 for-layout 循环。
语义边界(与容错定位一致):
- 空输入串返回 (零值, false)——不区分「空」与「坏」,调用方要区分请 先判空;
- layouts 为空,或**任一** layout 为空串,返回 (零值, false)——空 layout 是调用方的配置错误,fail-loud 到 ok=false,不静默跳过;
- 全部 layout 都解析失败返回 (零值, false)——全失败的调用方语义各异 (nil 指针 / 零值+ok / 错误包装),原语只承诺 (time.Time, bool) 一种,包装留给调用方(故不做 MustParseFirst);
- 解析走 time.Parse 语义(layout 不含时区信息时结果为 UTC——与既有 消费形态一致;带时区的变体如 ParseFirstInLocation 留作后续)。
用法:
dueOn, ok := timex.ParseFirst(raw, time.RFC3339, "2006-01-02 15:04:05", "2006-01-02")
func StampInt2Date ¶
StampInt2Date 将 Unix 时间戳转换为日期格式。
func StampString2Date ¶
StampString2Date 将时间戳字符串转换为日期格式。 解析失败时返回空字符串。
func TimestampString ¶
func TimestampString() string
TimestampString 返回当前 Unix 时间戳的字符串。 时间戳始终为 UTC 秒数,不含时区偏移(Unix 时间戳是时区无关的)。
Types ¶
This section is empty.