提供了时间相关的一些操作,包括时间格式化、时间计算、时间区间计算、时间转换等
import "github.com/dengrandpa/jez/timejez"
- ParseTime
- ParseTimestamp
- StartOfMinute
- EndOfMinute
- StartOfHour
- EndOfHour
- StartOfDay
- EndOfDay
- StartOfWeekMonday
- EndOfWeekSunday
- StartOfWeekSunday
- EndOfWeekMonday
- StartOfMonth
- EndOfMonth
- StartOfYear
- EndOfYear
- AddSecond
- AddMinute
- AddHour
- AddDay
- AddWeek
- AddMonth
- AddYear
- FormatTime
- FormatTimestamp
- FormatNow
- IsLeapYear
- RangeHours
- RangeDays
- RangeMonths
- RangeYears
- NewTime
- SubTime
- SubTimestamp
- CST
- ToCST
将字符串转换为时间,默认格式为 YYYYMMDDHHMMSS
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, timejez.CST())
tmStr := timejez.FormatTime(tm.Local())
fmt.Println(timejez.ToCST(timejez.ParseTime(tmStr)))
// Output:
// 2022-01-02 03:04:05 +0800 CST
}
将时间戳转换为时间
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, timejez.CST())
localTm := tm.Local()
fmt.Println(timejez.ToCST(timejez.ParseTimestamp(localTm.Unix())))
// Output:
// 2022-01-02 03:04:05 +0800 CST
}
返回时间 t 所在分钟的开始时间 yyyy-mm-dd hh:mm:00
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, timejez.CST())
fmt.Println(timejez.StartOfMinute(tm))
// Output:
// 2022-01-02 03:04:00 +0800 CST
}
返回时间 t 所在分钟的结束时间 yyyy-mm-dd hh:mm:59
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, timejez.CST())
res := timejez.EndOfMinute(tm)
fmt.Println(res)
// Output:
// 2022-01-02 03:04:59.999999999 +0800 CST
}
返回时间 t 所在小时的开始时间 yyyy-mm-dd hh:00:00
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, timejez.CST())
res := timejez.StartOfHour(tm)
fmt.Println(res)
// Output:
// 2022-01-02 03:00:00 +0800 CST
}
返回时间 t 所在小时的结束时间 yyyy-mm-dd hh:59:59
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, timejez.CST())
res := timejez.EndOfHour(tm)
fmt.Println(res)
// Output:
// 2022-01-02 03:59:59.999999999 +0800 CST
}
返回时间 t 所在天的开始时间 yyyy-mm-dd 00:00:00
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, timejez.CST())
res := timejez.StartOfDay(tm)
fmt.Println(res)
// Output:
// 2022-01-02 00:00:00 +0800 CST
}
返回时间 t 所在天的结束时间 yyyy-mm-dd 23:59:59
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, timejez.CST())
res := timejez.EndOfDay(tm)
fmt.Println(res)
// Output:
// 2022-01-02 23:59:59.999999999 +0800 CST
}
返回时间 t 所在周的开始时间,周一为第一天 yyyy-mm-dd 00:00:00
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, timejez.CST())
res := timejez.StartOfWeekMonday(tm)
fmt.Println(res)
fmt.Println(res.Weekday())
// Output:
// 2021-12-27 00:00:00 +0800 CST
// Monday
}
返回时间 t 所在周的结束时间,周日为最后一天 yyyy-mm-dd 23:59:59
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, timejez.CST())
res := timejez.EndOfWeekSunday(tm)
fmt.Println(res)
fmt.Println(res.Weekday().String())
// Output:
// 2022-01-02 23:59:59.999999999 +0800 CST
// Sunday
}
返回时间 t 所在周的开始时间,周日为第一天 yyyy-mm-dd 00:00:00
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, timejez.CST())
res := timejez.StartOfWeekSunday(tm)
fmt.Println(res)
fmt.Println(res.Weekday().String())
// Output:
// 2021-12-26 00:00:00 +0800 CST
// Sunday
}
返回时间 t 所在周的结束时间,周一为最后一天 yyyy-mm-dd 23:59:59
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, timejez.CST())
res := timejez.EndOfWeekMonday(tm)
fmt.Println(res)
fmt.Println(res.Weekday())
// Output:
// 2022-01-03 23:59:59.999999999 +0800 CST
// Monday
}
返回时间 t 所在月的开始时间 yyyy-mm-01 00:00:00
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, timejez.CST())
res := timejez.StartOfMonth(tm)
fmt.Println(res)
// Output:
// 2022-01-01 00:00:00 +0800 CST
}
返回时间 t 所在月的结束时间 yyyy-mm-dd 23:59:59
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, timejez.CST())
res := timejez.EndOfMonth(tm)
fmt.Println(res)
// Output:
// 2022-01-31 23:59:59.999999999 +0800 CST
}
返回时间 t 所在年的开始时间 yyyy-01-01 00:00:00
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, timejez.CST())
res := timejez.StartOfYear(tm)
fmt.Println(res)
fmt.Println(res.Month())
// Output:
// 2022-01-01 00:00:00 +0800 CST
// January
}
返回时间 t 所在年的结束时间 yyyy-12-31 23:59:59
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, timejez.CST())
res := timejez.EndOfYear(tm)
fmt.Println(res)
fmt.Println(res.Month())
// Output:
// 2022-12-31 23:59:59.999999999 +0800 CST
// December
}
添加或删除秒数
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, timejez.CST())
fmt.Println(timejez.AddSecond(tm, 10))
// Output:
// 2022-01-02 03:04:15 +0800 CST
}
添加或删除分钟数
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, timejez.CST())
fmt.Println(timejez.AddMinute(tm, 10))
// Output:
// 2022-01-02 03:14:05 +0800 CST
}
添加或删除小时数
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, timejez.CST())
fmt.Println(timejez.AddHour(tm, 10))
// Output:
// 2022-01-02 13:04:05 +0800 CST
}
添加或删除天数
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, timejez.CST())
fmt.Println(timejez.AddDay(tm, 10))
// Output:
// 2022-01-12 03:04:05 +0800 CST
}
添加或删除周数
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, timejez.CST())
res := timejez.AddWeek(tm, 10).Weekday()
fmt.Println(res == tm.Weekday())
// Output:
// true
}
添加或删除月数
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, timejez.CST())
fmt.Println(timejez.AddMonth(tm, 10).Month().String())
// Output:
// November
}
添加或删除年数
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, timejez.CST())
fmt.Println(timejez.AddYear(tm, 10))
// Output:
// 2032-01-02 03:04:05 +0800 CST
}
将时间格式化为字符串,默认格式为 yyyy-mm-dd hh:mm:ss
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, timejez.CST())
fmt.Println(timejez.FormatTime(tm))
fmt.Println(timejez.FormatTime(tm, timejez.YYYYMMDDHHMMSS2))
// Output:
// 2022-01-02 03:04:05
// 2022/01/02 03:04:05
}
将时间戳格式化为字符串,默认格式为 yyyy-mm-dd hh:mm:ss
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, timejez.CST())
fmt.Println(timejez.FormatTimestamp(tm.Local().Unix()) == timejez.FormatTime(tm.Local()))
// Output:
// true
}
返回当前时间的字符串格式,默认格式为 yyyy-mm-dd hh:mm:ss
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
now := timejez.FormatTime(time.Now())
res := timejez.FormatNow()
now1 := timejez.FormatTime(time.Now(), timejez.YYYYMMDDHHMMSS2)
res1 := timejez.FormatNow(timejez.YYYYMMDDHHMMSS2)
fmt.Println(now == res)
fmt.Println(now1 == res1)
// Output:
// true
// true
}
判断年份 year 是否为闰年
package main
import (
"fmt"
"github.com/dengrandpa/jez/timejez"
)
func main() {
fmt.Println(timejez.IsLeapYear(2012))
fmt.Println(timejez.IsLeapYear(2013))
// Output:
// true
// false
}
返回两个时间之间的所有小时的切片,包含 start 和 end,即[start,end],如果start和end结果一样,则只返回1个
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
tm1 := time.Date(2022, 1, 2, 3, 4, 5, 0, timejez.CST())
tm2 := time.Date(2022, 1, 2, 5, 55, 44, 0, timejez.CST())
fmt.Println(timejez.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]
}
返回两个时间之间的所有天的切片,包含 start 和 end,即[start,end],如果start和end结果一样,则只返回1个
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
tm1 := time.Date(2022, 1, 2, 3, 4, 5, 0, timejez.CST())
tm2 := time.Date(2022, 1, 4, 5, 55, 44, 0, timejez.CST())
fmt.Println(timejez.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]
}
返回两个时间之间的所有月的切片,包含 start 和 end,即[start,end],如果start和end结果一样,则只返回1个
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
tm1 := time.Date(2022, 1, 2, 3, 4, 5, 0, timejez.CST())
tm2 := time.Date(2022, 3, 4, 5, 55, 44, 0, timejez.CST())
fmt.Println(timejez.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]
}
返回两个时间之间的所有年的切片,包含 start 和 end,即[start,end],如果start和end结果一样,则只返回1个
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
tm1 := time.Date(2022, 1, 2, 3, 4, 5, 0, timejez.CST())
tm2 := time.Date(2024, 2, 4, 5, 55, 44, 0, timejez.CST())
fmt.Println(timejez.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]
}
相当于 time.Date,如果不传参数则相当于 time.Now。
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
tm := time.Date(2022, 1, 2, 3, 4, 5, 0, timejez.CST())
localTm := tm.In(time.Local)
tm1 := timejez.NewTime(localTm.Year(), int(localTm.Month()), localTm.Day(), localTm.Hour(), localTm.Minute(), localTm.Second())
fmt.Println(timejez.NewTime().Unix() == time.Now().Unix())
fmt.Println(timejez.ToCST(tm1))
// Output:
// true
// 2022-01-02 03:04:05 +0800 CST
}
返回 t1 和 t2 之间的差值的日、小时、分钟和秒
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
t1 := time.Date(2022, 1, 2, 22, 0, 0, 0, timejez.CST())
t2 := time.Date(2023, 1, 2, 1, 59, 6, 0, timejez.CST())
fmt.Println(timejez.SubTime(t2, t1))
// Output:
// 364 3 59 6
}
返回 t1 和 t2 之间的差值的日、小时、分钟和秒
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
t1 := time.Date(2022, 1, 2, 22, 0, 0, 0, timejez.CST())
t2 := time.Date(2022, 1, 33, 1, 59, 6, 0, timejez.CST())
fmt.Println(timejez.SubTimestamp(t1.Unix(), t2.Unix()))
// Output:
// 30 3 59 6
}
返回中国时区
package main
import (
"fmt"
"github.com/dengrandpa/jez/timejez"
)
func main() {
local := timejez.CST()
fmt.Println(local)
// Output:
// Asia/Shanghai
}
将时间转换为中国时区
package main
import (
"fmt"
"time"
"github.com/dengrandpa/jez/timejez"
)
func main() {
t1 := time.Date(2022, 1, 2, 3, 4, 5, 0, time.UTC)
t2 := time.Date(2022, 1, 2, 11, 4, 5, 0, timejez.CST())
t3 := timejez.ToCST(t1)
fmt.Println(t3)
fmt.Println(t2.Unix() == t3.Unix())
// Output:
// 2022-01-02 11:04:05 +0800 CST
// true
}