# Datetime datetime日期时间处理包,格式化日期,比较日期。
## 源码: - [https://github.com/duke-git/lancet/blob/main/datetime/datetime.go](https://github.com/duke-git/lancet/blob/main/datetime/datetime.go) ## 用法: ```go import ( "github.com/duke-git/lancet/v2/datetime" ) ``` ## 目录 - [AddDay](#AddDay) - [AddHour](#AddHour) - [AddMinute](#AddMinute) - [BeginOfMinute](#BeginOfMinute) - [BeginOfHour](#BeginOfHour) - [BeginOfDay](#BeginOfDay) - [BeginOfWeek](#BeginOfWeek) - [BeginOfMonth](#BeginOfMonth) - [BeginOfYear](#BeginOfYear) - [EndOfMinute](#EndOfMinute) - [EndOfHour](#EndOfHour) - [EndOfDay](#EndOfDay) - [EndOfWeek](#EndOfWeek) - [EndOfMonth](#EndOfMonth) - [EndOfYear](#EndOfYear) - [GetNowDate](#GetNowDate) - [GetNowTime](#GetNowTime) - [GetNowDateTime](#GetNowDateTime) - [GetZeroHourTimestamp](#GetZeroHourTimestamp) - [GetNightTimestamp](#GetNightTimestamp) - [FormatTimeToStr](#FormatTimeToStr) - [FormatStrToTime](#FormatStrToTime) - [NewUnixNow](#NewUnixNow) - [NewUnix](#NewUnix) - [NewFormat](#NewFormat) - [NewISO8601](#NewISO8601) - [ToUnix](#ToUnix) - [ToFormat](#ToFormat) - [ToFormatForTpl](#ToFormatForTpl) - [ToIso8601](#ToIso8601) ## 文档 ## 注: 1. 方法FormatTimeToStr和FormatStrToTime中的format参数值需要传以下类型之一: - yyyy-mm-dd hh:mm:ss - yyyy-mm-dd hh:mm - yyyy-mm-dd hh - yyyy-mm-dd - yyyy-mm - mm-dd - dd-mm-yy hh:mm:ss - yyyy/mm/dd hh:mm:ss - yyyy/mm/dd hh:mm - yyyy-mm-dd hh - yyyy/mm/dd - yyyy/mm - mm/dd - dd/mm/yy hh:mm:ss - yyyy - mm - hh:mm:ss - mm:ss ### AddDay将日期加/减天数
函数签名: ```go func AddDay(t time.Time, day int64) time.Time ``` 例子: ```go package main import ( "fmt" "time" "github.com/duke-git/lancet/v2/datetime" ) func main() { now := time.Now() after2Days := datetime.AddDay(now, 2) before2Days := datetime.AddDay(now, -2) fmt.Println(after2Days, before2Days) } ``` ### AddHour将日期加/减小时数
函数签名: ```go func AddHour(t time.Time, hour int64) time.Time ``` 例子: ```go package main import ( "fmt" "time" "github.com/duke-git/lancet/v2/datetime" ) func main() { now := time.Now() after2Hours := datetime.AddHour(now, 2) before2Hours := datetime.AddHour(now, -2) fmt.Println(after2Hours, after2Hours) } ``` ### AddMinute将日期加/减分钟数
函数签名: ```go func AddMinute(t time.Time, minute int64) time.Time ``` 例子: ```go package main import ( "fmt" "time" "github.com/duke-git/lancet/v2/datetime" ) func main() { now := time.Now() after2Minute := datetime.AddMinute(now, 2) before2Minute := datetime.AddMinute(now, -2) fmt.Println(after2Minute, before2Minute) } ``` ### BeginOfMinute返回指定时间的分钟开始时间
函数签名: ```go func BeginOfMinute(t time.Time) time.Time ``` 例子: ```go package main import ( "fmt" "time" "github.com/duke-git/lancet/v2/datetime" ) func main() { td := time.Date(2022, 2, 15, 15, 48, 40, 112, time.Local) bm := datetime.BeginOfMinute(td) fmt.Println(bm) //2022-02-15 15:48:00 +0800 CST } ``` ### BeginOfHour返回指定时间的小时开始时间
函数签名: ```go func BeginOfHour(t time.Time) time.Time ``` 例子: ```go package main import ( "fmt" "time" "github.com/duke-git/lancet/v2/datetime" ) func main() { td := time.Date(2022, 2, 15, 15, 48, 40, 112, time.Local) bm := datetime.BeginOfHour(td) fmt.Println(bm) //2022-02-15 15:00:00 +0800 CST } ``` ### BeginOfDay返回指定时间的当天开始时间
函数签名: ```go func BeginOfDay(t time.Time) time.Time ``` 例子: ```go package main import ( "fmt" "time" "github.com/duke-git/lancet/v2/datetime" ) func main() { td := time.Date(2022, 2, 15, 15, 48, 40, 112, time.Local) bm := datetime.BeginOfDay(td) fmt.Println(bm) //2022-02-15 00:00:00 +0800 CST } ``` ### BeginOfWeek返回指定时间的星期开始时间
函数签名: ```go func BeginOfWeek(t time.Time) time.Time ``` 例子: ```go package main import ( "fmt" "time" "github.com/duke-git/lancet/v2/datetime" ) func main() { td := time.Date(2022, 2, 15, 15, 48, 40, 112, time.Local) bm := datetime.BeginOfWeek(td) fmt.Println(bm) //2022-02-13 00:00:00 +0800 CST } ``` ### BeginOfMonth返回指定时间的当月开始时间
函数签名: ```go func BeginOfMonth(t time.Time) time.Time ``` 例子: ```go package main import ( "fmt" "time" "github.com/duke-git/lancet/v2/datetime" ) func main() { td := time.Date(2022, 2, 15, 15, 48, 40, 112, time.Local) bm := datetime.BeginOfMonth(td) fmt.Println(bm) //2022-02-01 00:00:00 +0800 CST } ``` ### BeginOfYear返回指定时间的当年开始时间
函数签名: ```go func BeginOfYear(t time.Time) time.Time ``` 例子: ```go package main import ( "fmt" "time" "github.com/duke-git/lancet/v2/datetime" ) func main() { td := time.Date(2022, 2, 15, 15, 48, 40, 112, time.Local) bm := datetime.BeginOfYear(td) fmt.Println(bm) //2022-01-01 00:00:00 +0800 CST } ``` ### EndOfMinute返回指定时间的分钟结束时间
函数签名: ```go func EndOfMinute(t time.Time) time.Time ``` 例子: ```go package main import ( "fmt" "time" "github.com/duke-git/lancet/v2/datetime" ) func main() { td := time.Date(2022, 2, 15, 15, 48, 40, 112, time.Local) bm := datetime.EndOfMinute(td) fmt.Println(bm) //2022-02-15 15:48:59.999999999 +0800 CST } ``` ### EndOfHour返回指定时间的小时结束时间
函数签名: ```go func EndOfHour(t time.Time) time.Time ``` 例子: ```go package main import ( "fmt" "time" "github.com/duke-git/lancet/v2/datetime" ) func main() { td := time.Date(2022, 2, 15, 15, 48, 40, 112, time.Local) bm := datetime.EndOfHour(td) fmt.Println(bm) //2022-02-15 15:59:59.999999999 +0800 CST } ``` ### EndOfDay返回指定时间的当天结束时间.
函数签名: ```go func EndOfDay(t time.Time) time.Time ``` 例子: ```go package main import ( "fmt" "time" "github.com/duke-git/lancet/v2/datetime" ) func main() { td := time.Date(2022, 2, 15, 15, 48, 40, 112, time.Local) bm := datetime.EndOfDay(td) fmt.Println(bm) //2022-02-15 23:59:59.999999999 +0800 CST } ``` ### EndOfWeek返回指定时间的星期结束时间
函数签名: ```go func EndOfWeek(t time.Time) time.Time ``` 例子: ```go package main import ( "fmt" "time" "github.com/duke-git/lancet/v2/datetime" ) func main() { td := time.Date(2022, 2, 15, 15, 48, 40, 112, time.Local) bm := datetime.EndOfWeek(td) fmt.Println(bm) //2022-02-19 23:59:59.999999999 +0800 CST } ``` ### EndOfMonth返回指定时间的月份结束时间
函数签名: ```go func EndOfMonth(t time.Time) time.Time ``` 例子: ```go package main import ( "fmt" "time" "github.com/duke-git/lancet/v2/datetime" ) func main() { td := time.Date(2022, 2, 15, 15, 48, 40, 112, time.Local) bm := datetime.EndOfMonth(td) fmt.Println(bm) //2022-02-28 23:59:59.999999999 +0800 CST } ``` ### EndOfYear返回指定时间的年份结束时间
函数签名: ```go func EndOfYear(t time.Time) time.Time ``` 例子: ```go package main import ( "fmt" "time" "github.com/duke-git/lancet/v2/datetime" ) func main() { td := time.Date(2022, 2, 15, 15, 48, 40, 112, time.Local) bm := datetime.EndOfYear(td) fmt.Println(bm) //2022-12-31 23:59:59.999999999 +0800 CST } ``` ### GetNowDate获取当天日期,返回格式:yyyy-mm-dd
函数签名: ```go func GetNowDate() string ``` 例子: ```go package main import ( "fmt" "time" "github.com/duke-git/lancet/v2/datetime" ) func main() { now := time.Now() currentDate := datetime.GetNowDate() fmt.Println(currentDate) // 2022-01-28 } ``` ### GetNowTime获取当时时间,返回格式:hh:mm:ss
函数签名: ```go func GetNowTime() string ``` 例子: ```go package main import ( "fmt" "time" "github.com/duke-git/lancet/v2/datetime" ) func main() { now := time.Now() currentTime := datetime.GetNowTime() fmt.Println(currentDate) // 15:57:33 } ``` ### GetNowDateTime获取当时日期和时间,返回格式:yyyy-mm-dd hh:mm:ss.
函数签名: ```go func GetNowDateTime() string ``` 例子: ```go package main import ( "fmt" "time" "github.com/duke-git/lancet/v2/datetime" ) func main() { now := time.Now() current := datetime.GetNowDateTime() fmt.Println(current) // 2022-01-28 15:59:33 } ``` ### GetZeroHourTimestamp获取零时时间戳(timestamp of 00:00).
函数签名: ```go func GetZeroHourTimestamp() int64 ``` 例子: ```go package main import ( "fmt" "time" "github.com/duke-git/lancet/v2/datetime" ) func main() { now := time.Now() zeroTime := datetime.GetZeroHourTimestamp() fmt.Println(zeroTime) // 1643299200 } ``` ### GetNightTimestamp获取午夜时间戳(timestamp of 23:59).
函数签名: ```go func GetNightTimestamp() int64 ``` 例子: ```go package main import ( "fmt" "time" "github.com/duke-git/lancet/v2/datetime" ) func main() { now := time.Now() nightTime := datetime.GetNightTimestamp() fmt.Println(nightTime) // 1643385599 } ``` ### FormatTimeToStr将日期格式化成字符串,`format` 参数格式参考注1
函数签名: ```go func FormatTimeToStr(t time.Time, format string) string ``` 例子: ```go package main import ( "fmt" "time" "github.com/duke-git/lancet/v2/datetime" ) func main() { now := time.Now() timeStr := datetime.FormatTimeToStr(now, "yyyy/mm/dd hh:mm:ss") fmt.Println(timeStr) //2022/01/28 16:07:44 } ``` ### FormatStrToTime将字符串格式化成时间,`format` 参数格式参考注1
函数签名: ```go func FormatStrToTime(str, format string) (time.Time, error) ``` 例子: ```go package main import ( "fmt" "github.com/duke-git/lancet/v2/datetime" ) func main() { time := datetime.FormatStrToTime("2006-01-02 15:04:05", "yyyy/mm/dd hh:mm:ss") fmt.Println(time) } ``` ### NewUnixNow创建一个当前时间的unix时间戳
函数签名: ```go type theTime struct { unix int64 } func NewUnixNow() *theTime ``` 例子: ```go package main import ( "fmt" "github.com/duke-git/lancet/v2/datetime" ) func main() { tm := datetime.NewUnixNow() fmt.Println(tm) //&{1647597438} } ``` ### NewUnix创建一个unix时间戳
函数签名: ```go type theTime struct { unix int64 } func NewUnix(unix int64) *theTime ``` 例子: ```go package main import ( "fmt" "github.com/duke-git/lancet/v2/datetime" ) func main() { tm := datetime.NewUnix(1647597438) fmt.Println(tm) //&{1647597438} } ``` ### NewFormat创建一个yyyy-mm-dd hh:mm:ss格式时间字符串的unix时间戳
函数签名: ```go type theTime struct { unix int64 } func NewFormat(t string) (*theTime, error) ``` 例子: ```go package main import ( "fmt" "github.com/duke-git/lancet/v2/datetime" ) func main() { tm, err := datetime.NewFormat("2022-03-18 17:04:05") fmt.Println(tm) //&{1647594245} } ``` ### NewISO8601创建一个iso8601格式时间字符串的unix时间戳
函数签名: ```go type theTime struct { unix int64 } func NewISO8601(iso8601 string) (*theTime, error) ``` 例子: ```go package main import ( "fmt" "github.com/duke-git/lancet/v2/datetime" ) func main() { tm, err := datetime.NewISO8601("2006-01-02T15:04:05.999Z") fmt.Println(tm) //&{1136214245} } ``` ### ToUnix返回unix时间戳
函数签名: ```go func (t *theTime) ToUnix() int64 ``` 例子: ```go package main import ( "fmt" "github.com/duke-git/lancet/v2/datetime" ) func main() { tm := datetime.NewUnixNow() fmt.Println(tm.ToUnix()) //1647597438 } ``` ### ToFormat返回格式'yyyy-mm-dd hh:mm:ss'的日期字符串
函数签名: ```go func (t *theTime) ToFormat() string ``` 例子: ```go package main import ( "fmt" "github.com/duke-git/lancet/v2/datetime" ) func main() { tm, _ := datetime.NewFormat("2022-03-18 17:04:05") fmt.Println(tm.ToFormat()) //"2022-03-18 17:04:05" } ``` ### ToFormatForTpl返回tpl格式指定的日期字符串
函数签名: ```go func (t *theTime) ToFormatForTpl(tpl string) string ``` 例子: ```go package main import ( "fmt" "github.com/duke-git/lancet/v2/datetime" ) func main() { tm, _ := datetime.NewFormat("2022-03-18 17:04:05") ts := tm.ToFormatForTpl("2006/01/02 15:04:05") fmt.Println(ts) //"2022/03/18 17:04:05" } ``` ### ToIso8601返回iso8601日期字符串
函数签名: ```go func (t *theTime) ToIso8601() string ``` 例子: ```go package main import ( "fmt" "github.com/duke-git/lancet/v2/datetime" ) func main() { tm, _ := datetime.NewISO8601("2006-01-02T15:04:05.999Z") ts := tm.ToIso8601() fmt.Println(ts) //"2006-01-02T23:04:05+08:00" } ```