Documentation
¶
Overview ¶
Package datetime 提供日期时间处理的实用函数集合。
包含以下功能: - 时间格式常量 - 日期范围计算 - 时间数组操作 - JSON时间格式化 - 常用时间操作
Index ¶
- Constants
- func DayStartTime(t time.Time) time.Time
- func EmptyTimeToNow(t time.Time) time.Time
- func FormatAsDate(t time.Time) string
- func FormatYDMHMS(in time.Time) string
- func LastDay(d time.Time) time.Time
- func NextDay(d time.Time) time.Time
- func NowStrYMDHMS() string
- func SplitStr2DateRange(utime, separator string) (start string, end string, err error)
- func Time2Pointer(input time.Time) *time.Time
- func TimeFormat(tm time.Time, format string) (res string)
- func TimeFormatByYMDHMS(format string) (res string)
- func Timestamp2TimeInt64(in int64) time.Time
- func Timestamp2TimeUint64(in uint64) time.Time
- func TodayStartTime() time.Time
- func TomorrowStartTime() time.Time
- func YesterdayStartTime() time.Time
- type DateTimeRange
- type JsonTime
- type SortableTimeArray
Constants ¶
const ( TimeFormatYMDhms = "2006-01-02 15:04:05" //default format TimeFormatYMD = "2006-01-02" //default format )
Variables ¶
This section is empty.
Functions ¶
func DayStartTime ¶
DayStartTime 返回给定时间当天的开始时间(00:00:00)。
参数:
- t: 输入时间
返回值:
- time.Time: 当天的开始时间
示例:
start := DayStartTime(time.Now()) // 返回今天00:00:00的时间
func EmptyTimeToNow ¶
EmptyTimeToNow 如果输入时间为零值,则返回当前时间,否则返回原时间。
参数:
- t: 输入时间
返回值:
- time.Time: 处理后的时间
示例:
validTime := EmptyTimeToNow(time.Time{}) // 返回当前时间
validTime := EmptyTimeToNow(someTime) // 返回someTime
func FormatAsDate ¶
FormatAsDate 将时间格式化为"YYYY-MM-DD"格式字符串。
参数:
- t: 输入时间
返回值:
- string: 格式化后的日期字符串
示例:
dateStr := FormatAsDate(time.Now()) // 返回如"2023-01-01"
func FormatYDMHMS ¶
FormatYDMHMS 将时间格式化为"YYYY-MM-DD HH:MM:SS"格式的字符串。
参数:
- in: 要格式化的时间
返回值:
- string: 格式化后的时间字符串
示例:
str := FormatYDMHMS(time.Now()) // 返回如"2023-01-01 12:00:00"
func LastDay ¶
LastDay 返回给定时间的前一天同一时间。
参数:
- d: 输入时间
返回值:
- time.Time: 前一天同一时间
示例:
lastDay := LastDay(time.Now()) // 返回昨天此时的时间
func NextDay ¶
NextDay 返回给定时间的后一天同一时间。
参数:
- d: 输入时间
返回值:
- time.Time: 后一天同一时间
示例:
nextDay := NextDay(time.Now()) // 返回明天此时的时间
func NowStrYMDHMS ¶
func NowStrYMDHMS() string
NowStrYMDHMS 返回当前时间的"YYYY-MM-DD HH:MM:SS"格式字符串。
返回值:
- string: 当前时间的格式化字符串
示例:
str := NowStrYMDHMS() // 返回如"2023-01-01 12:00:00"
func SplitStr2DateRange ¶
SplitStr2DateRange 将包含分隔符的日期字符串拆分为开始和结束时间。
参数:
- utime: 包含分隔符的日期字符串(如"2023-01-01~2023-01-02")
- separator: 分隔符(如"~")
返回值:
- start: 开始时间字符串(格式为"YYYY-MM-DD 00:00:00")
- end: 结束时间字符串(格式为"YYYY-MM-DD 23:59:59")
- err: 如果格式错误则返回错误
示例:
start, end, err := SplitStr2DateRange("2023-01-01~2023-01-02", "~")
// 返回 "2023-01-01 00:00:00", "2023-01-02 23:59:59", nil
func Time2Pointer ¶
Time2Pointer 将time.Time转换为指针类型。 这是一个解决Go中时间指针转换问题的实现,参考Go官方issue #45653。
参数:
- input: 输入时间
返回值:
- *time.Time: 时间指针
示例:
timePtr := Time2Pointer(time.Now()) // 返回当前时间的指针
func TimeFormat ¶
TimeFormat 按指定格式格式化时间。 先使用TimeFormatByYMDHMS转换格式字符串,再格式化时间。
参数:
- tm: 要格式化的时间
- format: 格式字符串(如"yyyy-MM-dd hh:mm:ss")
返回值:
- string: 格式化后的时间字符串
示例:
str := TimeFormat(time.Now(), "yyyy-MM-dd") // 返回如"2023-01-01"
func TimeFormatByYMDHMS ¶
TimeFormatByYMDHMS 将常见日期时间格式转换为Go标准格式。 支持转换的格式标记:
- yyyy → 2006 (年)
- MM → 01 (月)
- dd → 02 (日)
- hh → 15 (时)
- mm → 04 (分)
- ss → 05 (秒)
- .sss → .000 (毫秒)
参数:
- format: 输入格式字符串(如"yyyy-MM-dd hh:mm:ss")
返回值:
- string: 转换后的Go标准格式字符串
示例:
goFormat := TimeFormatByYMDHMS("yyyy-MM-dd hh:mm:ss") // 返回"2006-01-02 15:04:05"
func Timestamp2TimeInt64 ¶
Timestamp2TimeInt64 将int64类型的时间戳转换为time.Time。
参数:
- in: Unix时间戳(秒)
返回值:
- time.Time: 转换后的时间
示例:
t := Timestamp2TimeInt64(1672531200) // 返回2023-01-01 00:00:00 +0000 UTC
func Timestamp2TimeUint64 ¶
Timestamp2TimeUint64 将uint64类型的时间戳转换为time.Time。
参数:
- in: Unix时间戳(秒)
返回值:
- time.Time: 转换后的时间
示例:
t := Timestamp2TimeUint64(1672531200) // 返回2023-01-01 00:00:00 +0000 UTC
func TodayStartTime ¶
TodayStartTime 返回今天开始时间(00:00:00)。
返回值:
- time.Time: 今天00:00:00的时间
示例:
today := TodayStartTime() // 返回今天00:00:00的时间
func TomorrowStartTime ¶
TomorrowStartTime 返回明天开始时间(00:00:00)。
返回值:
- time.Time: 明天00:00:00的时间
示例:
tomorrow := TomorrowStartTime() // 返回明天00:00:00的时间
func YesterdayStartTime ¶
YesterdayStartTime 返回昨天开始时间(00:00:00)。
返回值:
- time.Time: 昨天00:00:00的时间
示例:
yesterday := YesterdayStartTime() // 返回昨天00:00:00的时间
Types ¶
type DateTimeRange ¶
type DateTimeRange struct {
Start time.Time
End time.Time
TimestampStart uint64
TimestampEnd uint64
DateTimeString string
DateString string
}
func DayRange ¶
func DayRange(d time.Time) (dateSE DateTimeRange)
DayRange 根据给定时间生成当天的日期时间范围(00:00:00到次日00:00:00)。
参数:
- d: 输入时间
返回值:
- DateTimeRange: 包含完整时间范围信息的结构体
示例:
range := DayRange(time.Now()) // 返回今天00:00:00到明天00:00:00的范围
func GetTodayRange ¶
func GetTodayRange() DateTimeRange
GetTodayRange 获取当前日期的日期时间范围(00:00:00到次日00:00:00)。
返回值:
- DateTimeRange: 包含完整时间范围信息的结构体
示例:
range := GetTodayRange() // 返回今天00:00:00到明天00:00:00的范围
func GetYesterdayRange ¶
func GetYesterdayRange() DateTimeRange
GetYesterdayRange 获取昨天日期的日期时间范围(00:00:00到次日00:00:00)。
返回值:
- DateTimeRange: 包含完整时间范围信息的结构体
示例:
range := GetYesterdayRange() // 返回昨天00:00:00到今天00:00:00的范围
func LastDayRange ¶
func LastDayRange(d time.Time) DateTimeRange
func NextDayRange ¶
func NextDayRange(d time.Time) DateTimeRange
NextDayRange 根据给定时间生成后一天的日期时间范围(00:00:00到次日00:00:00)。
参数:
- d: 输入时间
返回值:
- DateTimeRange: 包含完整时间范围信息的结构体
示例:
range := NextDayRange(time.Now()) // 返回明天00:00:00到后天00:00:00的范围
type JsonTime ¶
JsonTime 是time.Time的自定义封装,支持JSON序列化和反序列化。 可以指定自定义的时间格式字符串,默认使用"2006-01-02 15:04:05"格式。
func (JsonTime) GetFormatStr ¶
GetFormatStr 获取时间格式字符串。 如果设置了FormatStr则返回自定义格式,否则返回默认格式。
返回值:
- string: 时间格式字符串
func (JsonTime) MarshalJson ¶
MarshalJson 实现JsonTime的JSON序列化方法。 按照GetFormatStr返回的格式将时间序列化为字符串。
返回值:
- []byte: JSON格式的时间字符串
- error: 序列化错误
func (*JsonTime) UnmarshalJson ¶
UnmarshalJson 实现JsonTime的JSON反序列化方法。 将JSON字符串解析为时间对象,使用GetFormatStr返回的格式进行解析。
参数:
- data: JSON格式的时间字符串
返回值:
- error: 解析错误
注意:
- 如果解析失败会返回零值时间
type SortableTimeArray ¶
SortableTimeArray 可排序的时间数组类型,实现了sort.Interface接口。
使用示例:
times := SortableTimeArray{time1, time2, time3}
sort.Sort(times) // 按时间升序排序
func (SortableTimeArray) Len ¶
func (s SortableTimeArray) Len() int
Len 返回时间数组的长度,实现sort.Interface接口。
返回值:
- int: 数组元素数量
func (SortableTimeArray) Less ¶
func (s SortableTimeArray) Less(i, j int) bool
Less 比较两个时间元素的顺序,实现sort.Interface接口。 基于Unix时间戳进行比较,确保跨时区的一致性。
参数:
- i: 第一个元素的索引
- j: 第二个元素的索引
返回值:
- bool: 如果第i个元素的时间早于第j个元素返回true
func (SortableTimeArray) Swap ¶
func (s SortableTimeArray) Swap(i, j int)
Swap 交换时间数组中的两个元素,实现sort.Interface接口。
参数:
- i: 第一个元素的索引
- j: 第二个元素的索引