datetime

package
v1.3.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 19, 2025 License: MIT Imports: 4 Imported by: 0

Documentation

Overview

Package datetime 提供日期时间处理的实用函数集合。

包含以下功能: - 时间格式常量 - 日期范围计算 - 时间数组操作 - JSON时间格式化 - 常用时间操作

Index

Constants

View Source
const (
	TimeFormatYMDhms = "2006-01-02 15:04:05" //default format
	TimeFormatYMD    = "2006-01-02"          //default format
)

Variables

This section is empty.

Functions

func DayStartTime

func DayStartTime(t time.Time) time.Time

DayStartTime 返回给定时间当天的开始时间(00:00:00)。

参数:

  • t: 输入时间

返回值:

  • time.Time: 当天的开始时间

示例:

start := DayStartTime(time.Now()) // 返回今天00:00:00的时间

func EmptyTimeToNow

func EmptyTimeToNow(t time.Time) time.Time

EmptyTimeToNow 如果输入时间为零值,则返回当前时间,否则返回原时间。

参数:

  • t: 输入时间

返回值:

  • time.Time: 处理后的时间

示例:

validTime := EmptyTimeToNow(time.Time{}) // 返回当前时间
validTime := EmptyTimeToNow(someTime) // 返回someTime

func FormatAsDate

func FormatAsDate(t time.Time) string

FormatAsDate 将时间格式化为"YYYY-MM-DD"格式字符串。

参数:

  • t: 输入时间

返回值:

  • string: 格式化后的日期字符串

示例:

dateStr := FormatAsDate(time.Now()) // 返回如"2023-01-01"

func FormatYDMHMS

func FormatYDMHMS(in time.Time) string

FormatYDMHMS 将时间格式化为"YYYY-MM-DD HH:MM:SS"格式的字符串。

参数:

  • in: 要格式化的时间

返回值:

  • string: 格式化后的时间字符串

示例:

str := FormatYDMHMS(time.Now()) // 返回如"2023-01-01 12:00:00"

func LastDay

func LastDay(d time.Time) time.Time

LastDay 返回给定时间的前一天同一时间。

参数:

  • d: 输入时间

返回值:

  • time.Time: 前一天同一时间

示例:

lastDay := LastDay(time.Now()) // 返回昨天此时的时间

func NextDay

func NextDay(d time.Time) time.Time

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

func SplitStr2DateRange(utime, separator string) (start string, end string, err error)

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

func Time2Pointer(input time.Time) *time.Time

Time2Pointer 将time.Time转换为指针类型。 这是一个解决Go中时间指针转换问题的实现,参考Go官方issue #45653。

参数:

  • input: 输入时间

返回值:

  • *time.Time: 时间指针

示例:

timePtr := Time2Pointer(time.Now()) // 返回当前时间的指针

func TimeFormat

func TimeFormat(tm time.Time, format string) (res string)

TimeFormat 按指定格式格式化时间。 先使用TimeFormatByYMDHMS转换格式字符串,再格式化时间。

参数:

  • tm: 要格式化的时间
  • format: 格式字符串(如"yyyy-MM-dd hh:mm:ss")

返回值:

  • string: 格式化后的时间字符串

示例:

str := TimeFormat(time.Now(), "yyyy-MM-dd") // 返回如"2023-01-01"

func TimeFormatByYMDHMS

func TimeFormatByYMDHMS(format string) (res string)

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

func Timestamp2TimeInt64(in int64) time.Time

Timestamp2TimeInt64 将int64类型的时间戳转换为time.Time。

参数:

  • in: Unix时间戳(秒)

返回值:

  • time.Time: 转换后的时间

示例:

t := Timestamp2TimeInt64(1672531200) // 返回2023-01-01 00:00:00 +0000 UTC

func Timestamp2TimeUint64

func Timestamp2TimeUint64(in uint64) time.Time

Timestamp2TimeUint64 将uint64类型的时间戳转换为time.Time。

参数:

  • in: Unix时间戳(秒)

返回值:

  • time.Time: 转换后的时间

示例:

t := Timestamp2TimeUint64(1672531200) // 返回2023-01-01 00:00:00 +0000 UTC

func TodayStartTime

func TodayStartTime() time.Time

TodayStartTime 返回今天开始时间(00:00:00)。

返回值:

  • time.Time: 今天00:00:00的时间

示例:

today := TodayStartTime() // 返回今天00:00:00的时间

func TomorrowStartTime

func TomorrowStartTime() time.Time

TomorrowStartTime 返回明天开始时间(00:00:00)。

返回值:

  • time.Time: 明天00:00:00的时间

示例:

tomorrow := TomorrowStartTime() // 返回明天00:00:00的时间

func YesterdayStartTime

func YesterdayStartTime() time.Time

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

type JsonTime struct {
	time.Time
	FormatStr string // 自定义时间格式,如果为空则使用默认格式
}

JsonTime 是time.Time的自定义封装,支持JSON序列化和反序列化。 可以指定自定义的时间格式字符串,默认使用"2006-01-02 15:04:05"格式。

func (JsonTime) GetFormatStr

func (j JsonTime) GetFormatStr() string

GetFormatStr 获取时间格式字符串。 如果设置了FormatStr则返回自定义格式,否则返回默认格式。

返回值:

  • string: 时间格式字符串

func (JsonTime) MarshalJson

func (j JsonTime) MarshalJson() ([]byte, error)

MarshalJson 实现JsonTime的JSON序列化方法。 按照GetFormatStr返回的格式将时间序列化为字符串。

返回值:

  • []byte: JSON格式的时间字符串
  • error: 序列化错误

func (JsonTime) String

func (j JsonTime) String() string

String 返回格式化后的时间字符串。 使用GetFormatStr返回的格式进行格式化。

返回值:

  • string: 格式化后的时间字符串

func (*JsonTime) UnmarshalJson

func (j *JsonTime) UnmarshalJson(data []byte) (err error)

UnmarshalJson 实现JsonTime的JSON反序列化方法。 将JSON字符串解析为时间对象,使用GetFormatStr返回的格式进行解析。

参数:

  • data: JSON格式的时间字符串

返回值:

  • error: 解析错误

注意:

  • 如果解析失败会返回零值时间

type SortableTimeArray

type SortableTimeArray []time.Time

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: 第二个元素的索引

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL