timejez

package
v1.0.9 Latest Latest
Warning

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

Go to latest
Published: Dec 5, 2023 License: MIT Imports: 1 Imported by: 0

Documentation

Overview

Package timejez 时间相关函数

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func AddDay

func AddDay(t time.Time, day int) time.Time

AddDay 添加或删除天数

Example
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, CST())

fmt.Println(AddDay(tm, 10))
Output:

2022-01-12 03:04:05 +0800 CST

func AddHour

func AddHour(t time.Time, hour int) time.Time

AddHour 添加或删除小时数

Example
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, CST())

fmt.Println(AddHour(tm, 10))
Output:

2022-01-02 13:04:05 +0800 CST

func AddMinute

func AddMinute(t time.Time, minute int) time.Time

AddMinute 添加或删除分钟数

Example
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, CST())

fmt.Println(AddMinute(tm, 10))
Output:

2022-01-02 03:14:05 +0800 CST

func AddMonth

func AddMonth(t time.Time, month int) time.Time

AddMonth 添加或删除月数

Example
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, CST())

fmt.Println(AddMonth(tm, 10).Month().String())
Output:

November

func AddSecond

func AddSecond(t time.Time, second int) time.Time

AddSecond 添加或删除秒数

Example
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, CST())

fmt.Println(AddSecond(tm, 10))
Output:

2022-01-02 03:04:15 +0800 CST

func AddWeek

func AddWeek(t time.Time, week int) time.Time

AddWeek 添加或删除周数

Example
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, CST())

res := AddWeek(tm, 10).Weekday()

fmt.Println(res == tm.Weekday())
Output:

true

func AddYear

func AddYear(t time.Time, year int) time.Time

AddYear 添加或删除年数

Example
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, CST())

fmt.Println(AddYear(tm, 10))
Output:

2032-01-02 03:04:05 +0800 CST

func CST

func CST() *time.Location

CST 返回中国时区

Example
local := CST()

fmt.Println(local)
Output:

Asia/Shanghai

func EndOfDay

func EndOfDay(t time.Time) time.Time

EndOfDay 返回时间 t 所在天的结束时间 yyyy-mm-dd 23:59:59

Example
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, CST())
res := EndOfDay(tm)

fmt.Println(res)
Output:

2022-01-02 23:59:59.999999999 +0800 CST

func EndOfHour

func EndOfHour(t time.Time) time.Time

EndOfHour 返回时间 t 所在小时的结束时间 yyyy-mm-dd hh:59:59

Example
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, CST())
res := EndOfHour(tm)

fmt.Println(res)
Output:

2022-01-02 03:59:59.999999999 +0800 CST

func EndOfMinute

func EndOfMinute(t time.Time) time.Time

EndOfMinute 返回时间 t 所在分钟的结束时间 yyyy-mm-dd hh:mm:59

Example
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, CST())
res := EndOfMinute(tm)

fmt.Println(res)
Output:

2022-01-02 03:04:59.999999999 +0800 CST

func EndOfMonth

func EndOfMonth(t time.Time) time.Time

EndOfMonth 返回时间 t 所在月的结束时间 yyyy-mm-dd 23:59:59

Example
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, CST())
res := EndOfMonth(tm)

fmt.Println(res)
Output:

2022-01-31 23:59:59.999999999 +0800 CST

func EndOfWeekMonday

func EndOfWeekMonday(t time.Time) time.Time

EndOfWeekMonday 返回时间 t 所在周的结束时间,周一为最后一天 yyyy-mm-dd 23:59:59

Example
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, CST())
res := EndOfWeekMonday(tm)

fmt.Println(res)
fmt.Println(res.Weekday())
Output:

2022-01-03 23:59:59.999999999 +0800 CST
Monday

func EndOfWeekSunday

func EndOfWeekSunday(t time.Time) time.Time

EndOfWeekSunday 返回时间 t 所在周的结束时间,周日为最后一天 yyyy-mm-dd 23:59:59

Example
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, CST())
res := EndOfWeekSunday(tm)

fmt.Println(res)
fmt.Println(res.Weekday().String())
Output:

2022-01-02 23:59:59.999999999 +0800 CST
Sunday

func EndOfYear

func EndOfYear(t time.Time) time.Time

EndOfYear 返回时间 t 所在年的结束时间 yyyy-12-31 23:59:59

Example
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, CST())
res := EndOfYear(tm)

fmt.Println(res)
fmt.Println(res.Month())
Output:

2022-12-31 23:59:59.999999999 +0800 CST
December

func FormatNow

func FormatNow(format ...TimeFormat) string

FormatNow 返回当前时间的字符串格式,默认格式为 yyyy-mm-dd hh:mm:ss

Example
now := FormatTime(time.Now())
res := FormatNow()

now1 := FormatTime(time.Now(), YYYYMMDDHHMMSS2)
res1 := FormatNow(YYYYMMDDHHMMSS2)

fmt.Println(now == res)
fmt.Println(now1 == res1)
Output:

true
true

func FormatTime

func FormatTime(t time.Time, format ...TimeFormat) string

FormatTime 将时间格式化为字符串,默认格式为 yyyy-mm-dd hh:mm:ss

Example
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, CST())

fmt.Println(FormatTime(tm))
fmt.Println(FormatTime(tm, YYYYMMDDHHMMSS2))
Output:

2022-01-02 03:04:05
2022/01/02 03:04:05

func FormatTimestamp

func FormatTimestamp(timestamp int64, format ...TimeFormat) string

FormatTimestamp 将时间戳格式化为字符串,默认格式为 yyyy-mm-dd hh:mm:ss

Example
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, CST())

fmt.Println(FormatTimestamp(tm.Local().Unix()) == FormatTime(tm.Local()))
Output:

true

func IsLeapYear

func IsLeapYear(year int) bool

IsLeapYear 判断年份 year 是否为闰年

Example
fmt.Println(IsLeapYear(2012))
fmt.Println(IsLeapYear(2013))
Output:

true
false

func NewTime

func NewTime(loc *time.Location, t ...int) time.Time

NewTime 相当于 time.Date,如果不传参数则相当于 time.Now。

Example
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, CST())

localTm := tm.In(time.Local)

tm1 := NewTime(nil, localTm.Year(), int(localTm.Month()), localTm.Day(), localTm.Hour(), localTm.Minute(), localTm.Second())

fmt.Println(NewTime(nil).Unix() == time.Now().Unix())
fmt.Println(ToCST(tm1))
Output:

true
2022-01-02 03:04:05 +0800 CST

func ParseTime

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

ParseTime 将字符串转换为时间,默认格式为 YYYYMMDDHHMMSS

Example
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, CST())

tmStr := FormatTime(tm.Local())

fmt.Println(ToCST(ParseTime(tmStr)))
Output:

2022-01-02 03:04:05 +0800 CST

func ParseTimestamp

func ParseTimestamp(timestamp int64) time.Time

ParseTimestamp 将时间戳转换为时间

Example
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, CST())

localTm := tm.Local()

fmt.Println(ToCST(ParseTimestamp(localTm.Unix())))
Output:

2022-01-02 03:04:05 +0800 CST

func RangeDays

func RangeDays(start, end time.Time) []time.Time

RangeDays 返回两个时间之间的所有天的切片,包含 start 和 end,即[start,end],如果start和end结果一样,则只返回1个

Example
tm1 := time.Date(2022, 1, 2, 3, 4, 5, 0, CST())
tm2 := time.Date(2022, 1, 4, 5, 55, 44, 0, CST())

fmt.Println(RangeDays(tm1, tm2))
Output:

[2022-01-02 03:04:05 +0800 CST 2022-01-03 03:04:05 +0800 CST 2022-01-04 03:04:05 +0800 CST]

func RangeHours

func RangeHours(start, end time.Time) []time.Time

RangeHours 返回两个时间之间的所有小时的切片,包含 start 和 end,即[start,end],如果start和end结果一样,则只返回1个

Example
tm1 := time.Date(2022, 1, 2, 3, 4, 5, 0, CST())
tm2 := time.Date(2022, 1, 2, 5, 55, 44, 0, CST())

fmt.Println(RangeHours(tm1, tm2))
Output:

[2022-01-02 03:04:05 +0800 CST 2022-01-02 04:04:05 +0800 CST 2022-01-02 05:04:05 +0800 CST]

func RangeMonths

func RangeMonths(start, end time.Time) []time.Time

RangeMonths 返回两个时间之间的所有月的切片,包含 start 和 end,即[start,end],如果start和end结果一样,则只返回1个

Example
tm1 := time.Date(2022, 1, 2, 3, 4, 5, 0, CST())
tm2 := time.Date(2022, 3, 4, 5, 55, 44, 0, CST())

fmt.Println(RangeMonths(tm1, tm2))
Output:

[2022-01-02 03:04:05 +0800 CST 2022-02-02 03:04:05 +0800 CST 2022-03-02 03:04:05 +0800 CST]

func RangeYears

func RangeYears(start, end time.Time) []time.Time

RangeYears 返回两个时间之间的所有年的切片,包含 start 和 end,即[start,end],如果start和end结果一样,则只返回1个

Example
tm1 := time.Date(2022, 1, 2, 3, 4, 5, 0, CST())
tm2 := time.Date(2024, 2, 4, 5, 55, 44, 0, CST())

fmt.Println(RangeYears(tm1, tm2))
Output:

[2022-01-02 03:04:05 +0800 CST 2023-01-02 03:04:05 +0800 CST 2024-01-02 03:04:05 +0800 CST]

func StartOfDay

func StartOfDay(t time.Time) time.Time

StartOfDay 返回时间 t 所在天的开始时间 yyyy-mm-dd 00:00:00

Example
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, CST())
res := StartOfDay(tm)

fmt.Println(res)
Output:

2022-01-02 00:00:00 +0800 CST

func StartOfHour

func StartOfHour(t time.Time) time.Time

StartOfHour 返回时间 t 所在小时的开始时间 yyyy-mm-dd hh:00:00

Example
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, CST())
res := StartOfHour(tm)

fmt.Println(res)
Output:

2022-01-02 03:00:00 +0800 CST

func StartOfMinute

func StartOfMinute(t time.Time) time.Time

StartOfMinute 返回时间 t 所在分钟的开始时间 yyyy-mm-dd hh:mm:00

Example
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, CST())

fmt.Println(StartOfMinute(tm))
Output:

2022-01-02 03:04:00 +0800 CST

func StartOfMonth

func StartOfMonth(t time.Time) time.Time

StartOfMonth 返回时间 t 所在月的开始时间 yyyy-mm-01 00:00:00

Example
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, CST())
res := StartOfMonth(tm)

fmt.Println(res)
Output:

2022-01-01 00:00:00 +0800 CST

func StartOfWeekMonday

func StartOfWeekMonday(t time.Time) time.Time

StartOfWeekMonday 返回时间 t 所在周的开始时间,周一为第一天 yyyy-mm-dd 00:00:00

Example
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, CST())
res := StartOfWeekMonday(tm)

fmt.Println(res)
fmt.Println(res.Weekday())
Output:

2021-12-27 00:00:00 +0800 CST
Monday

func StartOfWeekSunday

func StartOfWeekSunday(t time.Time) time.Time

StartOfWeekSunday 返回时间 t 所在周的开始时间,周日为第一天 yyyy-mm-dd 00:00:00

Example
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, CST())
res := StartOfWeekSunday(tm)

fmt.Println(res)
fmt.Println(res.Weekday().String())
Output:

2021-12-26 00:00:00 +0800 CST
Sunday

func StartOfYear

func StartOfYear(t time.Time) time.Time

StartOfYear 返回时间 t 所在年的开始时间 yyyy-01-01 00:00:00

Example
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, CST())
res := StartOfYear(tm)

fmt.Println(res)
fmt.Println(res.Month())
Output:

2022-01-01 00:00:00 +0800 CST
January

func SubTime

func SubTime(t1, t2 time.Time) (days, hours, minutes, seconds int)

SubTime 返回 t1 和 t2 之间的差值的日、小时、分钟和秒

Example
t1 := time.Date(2022, 1, 2, 22, 0, 0, 0, CST())
t2 := time.Date(2023, 1, 2, 1, 59, 6, 0, CST())

fmt.Println(SubTime(t2, t1))
Output:

364 3 59 6

func SubTimestamp

func SubTimestamp(t1, t2 int64) (days, hours, minutes, seconds int)

SubTimestamp 返回 t1 和 t2 之间的差值的日、小时、分钟和秒

Example
t1 := time.Date(2022, 1, 2, 22, 0, 0, 0, CST())
t2 := time.Date(2022, 1, 33, 1, 59, 6, 0, CST())

fmt.Println(SubTimestamp(t1.Unix(), t2.Unix()))
Output:

30 3 59 6

func ToCST

func ToCST(t time.Time) time.Time

ToCST 将时间转换为中国时区

Example
t1 := time.Date(2022, 1, 2, 3, 4, 5, 0, time.UTC)

t2 := time.Date(2022, 1, 2, 11, 4, 5, 0, CST())

t3 := ToCST(t1)

fmt.Println(t3)

fmt.Println(t2.Unix() == t3.Unix())
Output:

2022-01-02 11:04:05 +0800 CST
true

Types

type TimeFormat

type TimeFormat string
const (
	YYYYMMDDHHMMSS  TimeFormat = "2006-01-02 15:04:05"
	YYYYMMDDHHMM    TimeFormat = "2006-01-02 15:04"
	YYYYMMDDHH      TimeFormat = "2006-01-02 15"
	YYYYMMDD        TimeFormat = "2006-01-02"
	YYYYMM          TimeFormat = "2006-01"
	MMDD            TimeFormat = "01-02"
	DDMMYYHHMMSS    TimeFormat = "02-01-06 15:04:05"
	YYYYMMDDHHMMSS2 TimeFormat = "2006/01/02 15:04:05"
	YYYYMMDDHHMM2   TimeFormat = "2006/01/02 15:04"
	YYYYMMDDHH2     TimeFormat = "2006/01/02 15"
	YYYYMMDD2       TimeFormat = "2006/01/02"
	YYYYMM2         TimeFormat = "2006/01"
	MMDD2           TimeFormat = "01/02"
	DDMMYYHHMMSS2   TimeFormat = "02/01/06 15:04:05"
	YYYY            TimeFormat = "2006"
	MM              TimeFormat = "01"
	HHMMSS          TimeFormat = "15:04:05"
	HHMM            TimeFormat = "15:04"
	MMSS            TimeFormat = "04:05"
)

Jump to

Keyboard shortcuts

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