84 lines
2.3 KiB
Go
84 lines
2.3 KiB
Go
![]() |
package xtime
|
||
|
|
||
|
import (
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
// 刷新点:时间边界
|
||
|
|
||
|
func GetDuration(t time.Time) (d time.Duration) {
|
||
|
return t.Sub(time.Now())
|
||
|
}
|
||
|
|
||
|
// 现在到明日刷新点的剩余时间间隔
|
||
|
func GetDurationToNextHour() (d time.Duration) {
|
||
|
return GetDurationToNextNHour(1)
|
||
|
}
|
||
|
|
||
|
// 现在到第N天刷新点的剩余时间间隔 (n为1是明天)
|
||
|
func GetDurationToNextNHour(n int) (d time.Duration) {
|
||
|
now := Now().StdTime()
|
||
|
next := Now().AddHours(n).StartOfHour().StdTime()
|
||
|
return next.Sub(now)
|
||
|
}
|
||
|
|
||
|
// 现在到明日刷新点的剩余时间间隔
|
||
|
func GetDurationToTomorrow() (d time.Duration) {
|
||
|
return GetDurationToNextNDay(1)
|
||
|
}
|
||
|
|
||
|
// 现在到第N天刷新点的剩余时间间隔 (n为1是明天)
|
||
|
func GetDurationToNextNDay(n int) (d time.Duration) {
|
||
|
now := Now().StdTime()
|
||
|
next := Now().AddDays(n).StartOfDay().StdTime()
|
||
|
return next.Sub(now)
|
||
|
}
|
||
|
|
||
|
// 现在到下周刷新点的剩余时间间隔
|
||
|
func GetDurationToNextWeek() (expiration time.Duration) {
|
||
|
return GetDurationToNextNWeek(1)
|
||
|
}
|
||
|
|
||
|
// 现在到下N周刷新点的剩余时间间隔 (n为1是下周)
|
||
|
func GetDurationToNextNWeek(n int) (expiration time.Duration) {
|
||
|
now := Now().StdTime()
|
||
|
nextN := Now().AddWeeks(n).StartOfWeek().StdTime()
|
||
|
return nextN.Sub(now)
|
||
|
}
|
||
|
|
||
|
// 现在到下月刷新点的剩余时间间隔
|
||
|
func GetDurationToNextMonth() (expiration time.Duration) {
|
||
|
return GetDurationToNextNMonth(1)
|
||
|
}
|
||
|
|
||
|
// 现在到下N月刷新点的剩余时间间隔 (n为1是下月)
|
||
|
func GetDurationToNextNMonth(n int) (expiration time.Duration) {
|
||
|
now := Now().StdTime()
|
||
|
nextN := Now().AddMonths(n).StartOfMonth().StdTime()
|
||
|
return nextN.Sub(now)
|
||
|
}
|
||
|
|
||
|
// 现在到下季度刷新点的剩余时间间隔
|
||
|
func GetDurationToNextQuarter() (expiration time.Duration) {
|
||
|
return GetDurationToNextNQuarter(1)
|
||
|
}
|
||
|
|
||
|
// 现在到下N季度刷新点的剩余时间间隔 (n为1是下年)
|
||
|
func GetDurationToNextNQuarter(n int) (expiration time.Duration) {
|
||
|
now := Now().StdTime()
|
||
|
nextN := Now().AddQuarters(n).StartOfQuarter().StdTime()
|
||
|
return nextN.Sub(now)
|
||
|
}
|
||
|
|
||
|
// 现在到下年刷新点的剩余时间间隔
|
||
|
func GetDurationToNextYear() (expiration time.Duration) {
|
||
|
return GetDurationToNextNYear(1)
|
||
|
}
|
||
|
|
||
|
// 现在到下N年刷新点的剩余时间间隔 (n为1是下年)
|
||
|
func GetDurationToNextNYear(n int) (expiration time.Duration) {
|
||
|
now := Now().StdTime()
|
||
|
nextN := Now().AddYears(n).StartOfYear().StdTime()
|
||
|
return nextN.Sub(now)
|
||
|
}
|