Datetime
datetime 日期时间处理包,格式化日期,比较日期。
源码:
用法:
import (
"github.com/duke-git/lancet/v2/datetime"
)import (
"github.com/duke-git/lancet/v2/datetime"
)目录
- AddDay
- AddHour
- AddMinute
- AddYear
- BeginOfMinute
- BeginOfHour
- BeginOfDay
- BeginOfWeek
- BeginOfMonth
- BeginOfYear
- EndOfMinute
- EndOfHour
- EndOfDay
- EndOfWeek
- EndOfMonth
- EndOfYear
- GetNowDate
- GetNowTime
- GetNowDateTime
- GetTodayStartTime
- GetTodayEndTime
- GetZeroHourTimestamp
- GetNightTimestamp
- FormatTimeToStr
- FormatStrToTime
- NewUnixNow
- NewUnix
- NewFormat
- NewISO8601
- ToUnix
- ToFormat
- ToFormatForTpl
- ToIso8601
- IsLeapYear
- BetweenSeconds
- DayOfYear
- IsWeekenddeprecated
- NowDateOrTime
- Timestamp
- TimestampMilli
- TimestampMicro
- TimestampNano
文档
注:
- 函数中
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
- yyyymmdd
- mmddyy
- yyyy
- yy
- mm
- hh:mm:ss
- hh:mm
- mm:ss
AddDay
将日期加/减天数。
函数签名:
func AddDay(t time.Time, day int64) time.Timefunc AddDay(t time.Time, day int64) time.Time示例:运行
package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
now := time.Now()
tomorrow := datetime.AddDay(now, 1)
diff1 := tomorrow.Sub(now)
yesterday := datetime.AddDay(now, -1)
diff2 := yesterday.Sub(now)
fmt.Println(diff1)
fmt.Println(diff2)
// Output:
// 24h0m0s
// -24h0m0s
}package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
now := time.Now()
tomorrow := datetime.AddDay(now, 1)
diff1 := tomorrow.Sub(now)
yesterday := datetime.AddDay(now, -1)
diff2 := yesterday.Sub(now)
fmt.Println(diff1)
fmt.Println(diff2)
// Output:
// 24h0m0s
// -24h0m0s
}AddHour
将日期加/减小时数。
函数签名:
func AddHour(t time.Time, hour int64) time.Timefunc AddHour(t time.Time, hour int64) time.Time示例:运行
package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
now := time.Now()
after2Hours := datetime.AddHour(now, 2)
diff1 := after2Hours.Sub(now)
before2Hours := datetime.AddHour(now, -2)
diff2 := before2Hours.Sub(now)
fmt.Println(diff1)
fmt.Println(diff2)
// Output:
// 2h0m0s
// -2h0m0s
}package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
now := time.Now()
after2Hours := datetime.AddHour(now, 2)
diff1 := after2Hours.Sub(now)
before2Hours := datetime.AddHour(now, -2)
diff2 := before2Hours.Sub(now)
fmt.Println(diff1)
fmt.Println(diff2)
// Output:
// 2h0m0s
// -2h0m0s
}AddMinute
将日期加/减分钟数。
函数签名:
func AddMinute(t time.Time, minute int64) time.Timefunc AddMinute(t time.Time, minute int64) time.Time示例:运行
package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
now := time.Now()
after2Minutes := datetime.AddMinute(now, 2)
diff1 := after2Minutes.Sub(now)
before2Minutes := datetime.AddMinute(now, -2)
diff2 := before2Minutes.Sub(now)
fmt.Println(diff1)
fmt.Println(diff2)
// Output:
// 2m0s
// -2m0s
}package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
now := time.Now()
after2Minutes := datetime.AddMinute(now, 2)
diff1 := after2Minutes.Sub(now)
before2Minutes := datetime.AddMinute(now, -2)
diff2 := before2Minutes.Sub(now)
fmt.Println(diff1)
fmt.Println(diff2)
// Output:
// 2m0s
// -2m0s
}AddYear
将日期加/减年数。
函数签名:
func AddYear(t time.Time, year int64) time.Timefunc AddYear(t time.Time, year int64) time.Time示例:运行
package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
now := time.Now()
after1Year := datetime.AddYear(now, 1)
diff1 := after1Year.Sub(now)
before1Year := datetime.AddYear(now, -1)
diff2 := before1Year.Sub(now)
fmt.Println(diff1)
fmt.Println(diff2)
// Output:
// 8760h0m0s
// -8760h0m0s
}package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
now := time.Now()
after1Year := datetime.AddYear(now, 1)
diff1 := after1Year.Sub(now)
before1Year := datetime.AddYear(now, -1)
diff2 := before1Year.Sub(now)
fmt.Println(diff1)
fmt.Println(diff2)
// Output:
// 8760h0m0s
// -8760h0m0s
}BeginOfMinute
返回指定时间的分钟开始时间。
函数签名:
func BeginOfMinute(t time.Time) time.Timefunc BeginOfMinute(t time.Time) time.Time示例:运行
package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
input := time.Date(2023, 1, 8, 18, 50, 10, 100, time.UTC)
result := datetime.BeginOfMinute(input)
fmt.Println(result)
// Output:
// 2023-01-08 18:50:00 +0000 UTC
}package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
input := time.Date(2023, 1, 8, 18, 50, 10, 100, time.UTC)
result := datetime.BeginOfMinute(input)
fmt.Println(result)
// Output:
// 2023-01-08 18:50:00 +0000 UTC
}BeginOfHour
返回指定时间的小时开始时间。
函数签名:
func BeginOfHour(t time.Time) time.Timefunc BeginOfHour(t time.Time) time.Time示例:运行
package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
input := time.Date(2023, 1, 8, 18, 50, 10, 100, time.UTC)
result := datetime.BeginOfHour(input)
fmt.Println(result)
// Output:
// 2023-01-08 18:00:00 +0000 UTC
}package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
input := time.Date(2023, 1, 8, 18, 50, 10, 100, time.UTC)
result := datetime.BeginOfHour(input)
fmt.Println(result)
// Output:
// 2023-01-08 18:00:00 +0000 UTC
}BeginOfDay
返回指定时间的当天开始时间。
函数签名:
func BeginOfDay(t time.Time) time.Timefunc BeginOfDay(t time.Time) time.Time示例:运行
package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
input := time.Date(2023, 1, 8, 18, 50, 10, 100, time.UTC)
result := datetime.BeginOfDay(input)
fmt.Println(result)
// Output:
// 2023-01-08 00:00:00 +0000 UTC
}package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
input := time.Date(2023, 1, 8, 18, 50, 10, 100, time.UTC)
result := datetime.BeginOfDay(input)
fmt.Println(result)
// Output:
// 2023-01-08 00:00:00 +0000 UTC
}BeginOfWeek
返回指定时间的每周开始时间,默认开始时间星期日。
函数签名:
func BeginOfWeek(t time.Time, beginFrom ...time.Weekday) time.Timefunc BeginOfWeek(t time.Time, beginFrom ...time.Weekday) time.Time示例:运行
package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
input := time.Date(2023, 1, 8, 18, 50, 10, 100, time.UTC)
result := datetime.BeginOfWeek(input)
fmt.Println(result)
// Output:
// 2023-01-08 00:00:00 +0000 UTC
}package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
input := time.Date(2023, 1, 8, 18, 50, 10, 100, time.UTC)
result := datetime.BeginOfWeek(input)
fmt.Println(result)
// Output:
// 2023-01-08 00:00:00 +0000 UTC
}BeginOfMonth
返回指定时间的当月开始时间。
函数签名:
func BeginOfMonth(t time.Time) time.Timefunc BeginOfMonth(t time.Time) time.Time示例:运行
package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
input := time.Date(2023, 1, 8, 18, 50, 10, 100, time.UTC)
result := datetime.BeginOfMonth(input)
fmt.Println(result)
// Output:
// 2023-01-01 00:00:00 +0000 UTC
}package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
input := time.Date(2023, 1, 8, 18, 50, 10, 100, time.UTC)
result := datetime.BeginOfMonth(input)
fmt.Println(result)
// Output:
// 2023-01-01 00:00:00 +0000 UTC
}BeginOfYear
返回指定时间的当年开始时间
函数签名:
func BeginOfYear(t time.Time) time.Timefunc BeginOfYear(t time.Time) time.Time示例:运行
package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
input := time.Date(2023, 1, 8, 18, 50, 10, 100, time.UTC)
result := datetime.BeginOfYear(input)
fmt.Println(result)
// Output:
// 2023-01-01 00:00:00 +0000 UTC
}package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
input := time.Date(2023, 1, 8, 18, 50, 10, 100, time.UTC)
result := datetime.BeginOfYear(input)
fmt.Println(result)
// Output:
// 2023-01-01 00:00:00 +0000 UTC
}EndOfMinute
返回指定时间的分钟结束时间。
函数签名:
func EndOfMinute(t time.Time) time.Timefunc EndOfMinute(t time.Time) time.Time示例:运行
package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
input := time.Date(2023, 1, 8, 18, 50, 10, 100, time.UTC)
result := datetime.EndOfMinute(input)
fmt.Println(result)
// Output:
// 2023-01-08 18:50:59.999999999 +0000 UTC
}package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
input := time.Date(2023, 1, 8, 18, 50, 10, 100, time.UTC)
result := datetime.EndOfMinute(input)
fmt.Println(result)
// Output:
// 2023-01-08 18:50:59.999999999 +0000 UTC
}EndOfHour
返回指定时间的小时结束时间。
函数签名:
func EndOfHour(t time.Time) time.Timefunc EndOfHour(t time.Time) time.Time示例:运行
package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
input := time.Date(2023, 1, 8, 18, 50, 10, 100, time.UTC)
result := datetime.EndOfHour(input)
fmt.Println(result)
// Output:
// 2023-01-08 18:59:59.999999999 +0000 UTC
}package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
input := time.Date(2023, 1, 8, 18, 50, 10, 100, time.UTC)
result := datetime.EndOfHour(input)
fmt.Println(result)
// Output:
// 2023-01-08 18:59:59.999999999 +0000 UTC
}EndOfDay
返回指定时间的当天结束时间。
函数签名:
func EndOfDay(t time.Time) time.Timefunc EndOfDay(t time.Time) time.Time示例:运行
package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
input := time.Date(2023, 1, 8, 18, 50, 10, 100, time.UTC)
result := datetime.EndOfDay(input)
fmt.Println(result)
// Output:
// 2023-01-08 23:59:59.999999999 +0000 UTC
}package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
input := time.Date(2023, 1, 8, 18, 50, 10, 100, time.UTC)
result := datetime.EndOfDay(input)
fmt.Println(result)
// Output:
// 2023-01-08 23:59:59.999999999 +0000 UTC
}EndOfWeek
返回指定时间的星期结束时间,默认结束时间星期六。
函数签名:
func EndOfWeek(t time.Time, endWith ...time.Weekday) time.Timefunc EndOfWeek(t time.Time, endWith ...time.Weekday) time.Time示例:运行
package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
input := time.Date(2023, 1, 8, 18, 50, 10, 100, time.UTC)
result := datetime.EndOfWeek(input)
fmt.Println(result)
// Output:
// 2023-01-14 23:59:59.999999999 +0000 UTC
}package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
input := time.Date(2023, 1, 8, 18, 50, 10, 100, time.UTC)
result := datetime.EndOfWeek(input)
fmt.Println(result)
// Output:
// 2023-01-14 23:59:59.999999999 +0000 UTC
}EndOfMonth
返回指定时间的当月结束时间。
函数签名:
func EndOfMonth(t time.Time) time.Timefunc EndOfMonth(t time.Time) time.Time示例:运行
package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
input := time.Date(2023, 1, 8, 18, 50, 10, 100, time.UTC)
result := datetime.EndOfMonth(input)
fmt.Println(result)
// Output:
// 2023-01-31 23:59:59.999999999 +0000 UTC
}package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
input := time.Date(2023, 1, 8, 18, 50, 10, 100, time.UTC)
result := datetime.EndOfMonth(input)
fmt.Println(result)
// Output:
// 2023-01-31 23:59:59.999999999 +0000 UTC
}EndOfYear
返回指定时间的当年结束时间。
函数签名:
func EndOfYear(t time.Time) time.Timefunc EndOfYear(t time.Time) time.Time示例:运行
package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
input := time.Date(2023, 1, 8, 18, 50, 10, 100, time.UTC)
result := datetime.EndOfYear(input)
fmt.Println(result)
// Output:
// 2023-12-31 23:59:59.999999999 +0000 UTC
}package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
input := time.Date(2023, 1, 8, 18, 50, 10, 100, time.UTC)
result := datetime.EndOfYear(input)
fmt.Println(result)
// Output:
// 2023-12-31 23:59:59.999999999 +0000 UTC
}GetNowDate
获取当天日期,返回格式:yyyy-mm-dd。
函数签名:
func GetNowDate() stringfunc GetNowDate() string示例:运行
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
currentDate := datetime.GetNowDate()
fmt.Println(currentDate)
// Output:
// 2022-01-28
}package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
currentDate := datetime.GetNowDate()
fmt.Println(currentDate)
// Output:
// 2022-01-28
}GetNowTime
获取当时时间,返回格式:hh:mm:ss
函数签名:
func GetNowTime() stringfunc GetNowTime() string示例:运行
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
currentTime := datetime.GetNowTime()
fmt.Println(currentTime)
// Output:
// 15:57:33
}package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
currentTime := datetime.GetNowTime()
fmt.Println(currentTime)
// Output:
// 15:57:33
}GetNowDateTime
获取当时日期和时间,返回格式:yyyy-mm-dd hh:mm:ss。
函数签名:
func GetNowDateTime() stringfunc GetNowDateTime() string示例:运行
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
current := datetime.GetNowDateTime()
fmt.Println(current)
// Output:
// 2022-01-28 15:59:33
}package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
current := datetime.GetNowDateTime()
fmt.Println(current)
// Output:
// 2022-01-28 15:59:33
}GetTodayStartTime
返回当天开始时间, 格式: yyyy-mm-dd 00:00:00。
函数签名:
func GetTodayStartTime() stringfunc GetTodayStartTime() string示例:运行
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
startTime := datetime.GetTodayStartTime()
fmt.Println(startTime)
// Output:
// 2023-06-29 00:00:00
}package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
startTime := datetime.GetTodayStartTime()
fmt.Println(startTime)
// Output:
// 2023-06-29 00:00:00
}GetTodayEndTime
返回当天结束时间,格式: yyyy-mm-dd 23:59:59。
函数签名:
func GetTodayEndTime() stringfunc GetTodayEndTime() string示例:运行
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
endTime := datetime.GetTodayEndTime()
fmt.Println(endTime)
// Output:
// 2023-06-29 23:59:59
}package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
endTime := datetime.GetTodayEndTime()
fmt.Println(endTime)
// Output:
// 2023-06-29 23:59:59
}GetZeroHourTimestamp
获取零点时间戳(timestamp of 00:00)
函数签名:
func GetZeroHourTimestamp() int64func GetZeroHourTimestamp() int64示例:运行
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
zeroTime := datetime.GetZeroHourTimestamp()
fmt.Println(zeroTime)
// Output:
// 1643299200
}package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
zeroTime := datetime.GetZeroHourTimestamp()
fmt.Println(zeroTime)
// Output:
// 1643299200
}GetNightTimestamp
获取午夜时间戳(timestamp of 23:59)。
函数签名:
func GetNightTimestamp() int64func GetNightTimestamp() int64示例:运行
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
nightTime := datetime.GetNightTimestamp()
fmt.Println(nightTime)
// Output:
// 1643385599
}package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
nightTime := datetime.GetNightTimestamp()
fmt.Println(nightTime)
// Output:
// 1643385599
}FormatTimeToStr
将日期格式化成字符串,`format` 参数格式参考注1。
函数签名:
func FormatTimeToStr(t time.Time, format string, timezone ...string) stringfunc FormatTimeToStr(t time.Time, format string, timezone ...string) string示例:运行
package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
t, _ := time.Parse("2006-01-02 15:04:05", "2021-01-02 16:04:08")
result1 := datetime.FormatTimeToStr(t, "yyyy-mm-dd hh:mm:ss")
result2 := datetime.FormatTimeToStr(t, "yyyy-mm-dd")
result3 := datetime.FormatTimeToStr(t, "dd-mm-yy hh:mm:ss")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
// Output:
// 2021-01-02 16:04:08
// 2021-01-02
// 02-01-21 16:04:08
}package main
import (
"fmt"
"time"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
t, _ := time.Parse("2006-01-02 15:04:05", "2021-01-02 16:04:08")
result1 := datetime.FormatTimeToStr(t, "yyyy-mm-dd hh:mm:ss")
result2 := datetime.FormatTimeToStr(t, "yyyy-mm-dd")
result3 := datetime.FormatTimeToStr(t, "dd-mm-yy hh:mm:ss")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
// Output:
// 2021-01-02 16:04:08
// 2021-01-02
// 02-01-21 16:04:08
}FormatStrToTime
将字符串格式化成时间,`format` 参数格式参考注1。
函数签名:
func FormatStrToTime(str, format string, timezone ...string) (time.Time, error)func FormatStrToTime(str, format string, timezone ...string) (time.Time, error)示例:运行
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
result1, _ := datetime.FormatStrToTime("2021-01-02 16:04:08", "yyyy-mm-dd hh:mm:ss")
result2, _ := datetime.FormatStrToTime("2021-01-02", "yyyy-mm-dd")
result3, _ := datetime.FormatStrToTime("02-01-21 16:04:08", "dd-mm-yy hh:mm:ss")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
// Output:
// 2021-01-02 16:04:08 +0000 UTC
// 2021-01-02 00:00:00 +0000 UTC
// 2021-01-02 16:04:08 +0000 UTC
}package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
result1, _ := datetime.FormatStrToTime("2021-01-02 16:04:08", "yyyy-mm-dd hh:mm:ss")
result2, _ := datetime.FormatStrToTime("2021-01-02", "yyyy-mm-dd")
result3, _ := datetime.FormatStrToTime("02-01-21 16:04:08", "dd-mm-yy hh:mm:ss")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
// Output:
// 2021-01-02 16:04:08 +0000 UTC
// 2021-01-02 00:00:00 +0000 UTC
// 2021-01-02 16:04:08 +0000 UTC
}NewUnixNow
创建一个当前时间的unix时间戳。
函数签名:
type theTime struct {
unix int64
}
func NewUnixNow() *theTimetype theTime struct {
unix int64
}
func NewUnixNow() *theTime示例:运行
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
tm := datetime.NewUnixNow()
fmt.Println(tm)
// Output:
// &{1647597438}
}package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
tm := datetime.NewUnixNow()
fmt.Println(tm)
// Output:
// &{1647597438}
}NewUnix
创建一个unix时间戳。
函数签名:
type theTime struct {
unix int64
}
func NewUnix(unix int64) *theTimetype theTime struct {
unix int64
}
func NewUnix(unix int64) *theTime示例:运行
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
tm := datetime.NewUnix(1647597438)
fmt.Println(tm)
// Output:
// &{1647597438}
}package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
tm := datetime.NewUnix(1647597438)
fmt.Println(tm)
// Output:
// &{1647597438}
}NewFormat
创建一个yyyy-mm-dd hh:mm:ss格式时间字符串的unix时间戳。
函数签名:
type theTime struct {
unix int64
}
func NewFormat(t string) (*theTime, error)type theTime struct {
unix int64
}
func NewFormat(t string) (*theTime, error)示例:运行
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)
// Output:
// &{1647594245}
}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)
// Output:
// &{1647594245}
}NewISO8601
创建一个iso8601格式时间字符串的unix时间戳。
函数签名:
type theTime struct {
unix int64
}
func NewISO8601(iso8601 string) (*theTime, error)type theTime struct {
unix int64
}
func NewISO8601(iso8601 string) (*theTime, error)示例:运行
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)
// Output:
// &{1136214245}
}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)
// Output:
// &{1136214245}
}ToUnix
返回unix时间戳。
函数签名:
func (t *theTime) ToUnix() int64func (t *theTime) ToUnix() int64示例:运行
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
tm := datetime.NewUnixNow()
fmt.Println(tm.ToUnix())
// Output:
// 1647597438
}package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
tm := datetime.NewUnixNow()
fmt.Println(tm.ToUnix())
// Output:
// 1647597438
}ToFormat
返回格式'yyyy-mm-dd hh:mm:ss'的日期字符串。
函数签名:
func (t *theTime) ToFormat() stringfunc (t *theTime) ToFormat() string示例:运行
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())
// Output:
// 2022-03-18 17:04:05
}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())
// Output:
// 2022-03-18 17:04:05
}ToFormatForTpl
返回tpl格式指定的日期字符串。
函数签名:
func (t *theTime) ToFormatForTpl(tpl string) stringfunc (t *theTime) ToFormatForTpl(tpl string) string示例:运行
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)
// Output:
// 2022/03/18 17:04:05
}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)
// Output:
// 2022/03/18 17:04:05
}ToIso8601
返回iso8601日期字符串。
函数签名:
func (t *theTime) ToIso8601() stringfunc (t *theTime) ToIso8601() string示例:运行
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)
// Output:
// 2006-01-02T23:04:05+08:00
}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)
// Output:
// 2006-01-02T23:04:05+08:00
}IsLeapYear
验证是否是闰年。
函数签名:
func IsLeapYear(year int) boolfunc IsLeapYear(year int) bool示例:运行
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
result1 := datetime.IsLeapYear(2000)
result2 := datetime.IsLeapYear(2001)
fmt.Println(result1)
fmt.Println(result2)
// Output:
// true
// false
}package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
result1 := datetime.IsLeapYear(2000)
result2 := datetime.IsLeapYear(2001)
fmt.Println(result1)
fmt.Println(result2)
// Output:
// true
// false
}BetweenSeconds
返回两个时间的间隔秒数。
函数签名:
func BetweenSeconds(t1 time.Time, t2 time.Time) int64func BetweenSeconds(t1 time.Time, t2 time.Time) int64示例:运行
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
today := time.Now()
tomorrow := datetime.AddDay(today, 1)
yesterday := datetime.AddDay(today, -1)
result1 := datetime.BetweenSeconds(today, tomorrow)
result2 := datetime.BetweenSeconds(today, yesterday)
fmt.Println(result1)
fmt.Println(result2)
// Output:
// 86400
// -86400
}package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
today := time.Now()
tomorrow := datetime.AddDay(today, 1)
yesterday := datetime.AddDay(today, -1)
result1 := datetime.BetweenSeconds(today, tomorrow)
result2 := datetime.BetweenSeconds(today, yesterday)
fmt.Println(result1)
fmt.Println(result2)
// Output:
// 86400
// -86400
}DayOfYear
返回参数日期是一年中的第几天。
函数签名:
func DayOfYear(t time.Time) intfunc DayOfYear(t time.Time) int示例:运行
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
date1 := time.Date(2023, 02, 01, 1, 1, 1, 0, time.Local)
result1 := datetime.DayOfYear(date1)
date2 := time.Date(2023, 01, 02, 1, 1, 1, 0, time.Local)
result2 := datetime.DayOfYear(date2)
date3 := time.Date(2023, 01, 01, 1, 1, 1, 0, time.Local)
result3 := datetime.DayOfYear(date3)
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
// Output:
// 31
// 1
// 0
}package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
date1 := time.Date(2023, 02, 01, 1, 1, 1, 0, time.Local)
result1 := datetime.DayOfYear(date1)
date2 := time.Date(2023, 01, 02, 1, 1, 1, 0, time.Local)
result2 := datetime.DayOfYear(date2)
date3 := time.Date(2023, 01, 01, 1, 1, 1, 0, time.Local)
result3 := datetime.DayOfYear(date3)
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
// Output:
// 31
// 1
// 0
}IsWeekend(已废弃, 使用 '== Weekday')
判断日期是否是周末。
函数签名:
func IsWeekend(t time.Time) boolfunc IsWeekend(t time.Time) bool示例:运行
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
date1 := time.Date(2023, 06, 03, 0, 0, 0, 0, time.Local)
date2 := time.Date(2023, 06, 04, 0, 0, 0, 0, time.Local)
date3 := time.Date(2023, 06, 02, 0, 0, 0, 0, time.Local)
result1 := datetime.IsWeekend(date1)
result2 := datetime.IsWeekend(date2)
result3 := datetime.IsWeekend(date3)
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
// Output:
// true
// true
// false
}package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
date1 := time.Date(2023, 06, 03, 0, 0, 0, 0, time.Local)
date2 := time.Date(2023, 06, 04, 0, 0, 0, 0, time.Local)
date3 := time.Date(2023, 06, 02, 0, 0, 0, 0, time.Local)
result1 := datetime.IsWeekend(date1)
result2 := datetime.IsWeekend(date2)
result3 := datetime.IsWeekend(date3)
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
// Output:
// true
// true
// false
}NowDateOrTime
根据指定的格式和时区返回当前时间字符串。
函数签名:
func NowDateOrTime(format string, timezone ...string) stringfunc NowDateOrTime(format string, timezone ...string) string示例:运行
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
result1 := datetime.NowDateOrTime("yyyy-mm-dd hh:mm:ss")
result2 := datetime.NowDateOrTime("yyyy-mm-dd hh:mm:ss", "EST")
fmt.Println(result1)
fmt.Println(result2)
// Output:
// 2023-07-26 15:01:30
// 2023-07-26 02:01:30
}package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
result1 := datetime.NowDateOrTime("yyyy-mm-dd hh:mm:ss")
result2 := datetime.NowDateOrTime("yyyy-mm-dd hh:mm:ss", "EST")
fmt.Println(result1)
fmt.Println(result2)
// Output:
// 2023-07-26 15:01:30
// 2023-07-26 02:01:30
}Timestamp
返回当前秒级时间戳。
函数签名:
func Timestamp(timezone ...string) int64func Timestamp(timezone ...string) int64示例:运行
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
ts := datetime.Timestamp()
fmt.Println(ts)
// Output:
// 1690363051
}package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
ts := datetime.Timestamp()
fmt.Println(ts)
// Output:
// 1690363051
}TimestampMilli
返回当前毫秒级时间戳。
函数签名:
func TimestampMilli(timezone ...string) int64func TimestampMilli(timezone ...string) int64示例:运行
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
ts := datetime.TimestampMilli()
fmt.Println(ts)
// Output:
// 1690363051331
}package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
ts := datetime.TimestampMilli()
fmt.Println(ts)
// Output:
// 1690363051331
}TimestampMicro
返回当前微秒级时间戳。
函数签名:
func TimestampMicro(timezone ...string) int64func TimestampMicro(timezone ...string) int64示例:运行
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
ts := datetime.TimestampMicro()
fmt.Println(ts)
// Output:
// 1690363051331784
}package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
ts := datetime.TimestampMicro()
fmt.Println(ts)
// Output:
// 1690363051331784
}TimestampNano
返回当前纳秒级时间戳。
函数签名:
func TimestampNano(timezone ...string) int64func TimestampNano(timezone ...string) int64示例:运行
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
ts := datetime.TimestampNano()
fmt.Println(ts)
// Output:
// 1690363051331788000
}package main
import (
"fmt"
"github.com/duke-git/lancet/v2/datetime"
)
func main() {
ts := datetime.TimestampNano()
fmt.Println(ts)
// Output:
// 1690363051331788000
}