times

package
v0.5.8 Latest Latest
Warning

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

Go to latest
Published: May 1, 2024 License: MIT Imports: 8 Imported by: 0

README

Times

Go doc

暂无介绍...

目录导航

列出了该 package 下所有的函数及类型定义,可通过目录导航进行快捷跳转 ❤️

展开 / 折叠目录导航

包级函数定义

函数名称 描述
CalcNextSec 计算下一个N秒在多少秒之后
CalcNextSecWithTime 计算下一个N秒在多少秒之后
CalcNextTimeWithRefer 根据参考时间计算下一个整点时间
IntervalFormatSet 针对 IntervalFormat 函数设置格式化内容
IntervalFormat 返回指定时间戳之间的间隔
GetMonthDays 获取一个时间当月共有多少天
WeekDay 获取一个时间是星期几
GetNextDayInterval 获取一个时间到下一天间隔多少秒
GetToday 获取一个时间的今天
GetSecond 获取共有多少秒
IsSameDay 两个时间是否是同一天
IsSameHour 两个时间是否是同一小时
GetMondayZero 获取本周一零点
Date 返回一个特定日期的时间
DateWithHMS 返回一个精确到秒的时间
GetDeltaDay 获取两个时间需要加减的天数
GetDeltaWeek 获取两个时间需要加减的周数
GetHSMFromString 从时间字符串中获取时分秒
GetTimeFromString 将时间字符串转化为时间
GetDayZero 获取 t 增加 day 天后的零点时间
GetYesterday 获取昨天
GetDayLast 获取某天的最后一刻
GetYesterdayLast 获取昨天最后一刻
GetMinuteStart 获取一个时间的 0 秒
GetMinuteEnd 获取一个时间的 59 秒
GetHourStart 获取一个时间的 0 分 0 秒
GetHourEnd 获取一个时间的 59 分 59 秒
GetMonthStart 获取一个时间的月初
GetMonthEnd 获取一个时间的月末
GetYearStart 获取一个时间的年初
GetYearEnd 获取一个时间的年末
NewStateLine 创建一个从左向右由早到晚的状态时间线
SetGlobalTimeOffset 设置全局时间偏移量
NowByNotOffset 获取未偏移的当前时间
GetGlobalTimeOffset 获取全局时间偏移量
ResetGlobalTimeOffset 重置全局时间偏移量
NewPeriod 创建一个时间段
NewPeriodWindow 创建一个特定长度的时间窗口
NewPeriodWindowWeek 创建一周长度的时间窗口,从周一零点开始至周日 23:59:59 结束
NewPeriodWithTimeArray 创建一个时间段
NewPeriodWithDayZero 创建一个时间段,从 t 开始,持续到 day 天后的 0 点
NewPeriodWithDay 创建一个时间段,从 t 开始,持续 day 天
NewPeriodWithHour 创建一个时间段,从 t 开始,持续 hour 小时
NewPeriodWithMinute 创建一个时间段,从 t 开始,持续 minute 分钟
NewPeriodWithSecond 创建一个时间段,从 t 开始,持续 second 秒
NewPeriodWithMillisecond 创建一个时间段,从 t 开始,持续 millisecond 毫秒
NewPeriodWithMicrosecond 创建一个时间段,从 t 开始,持续 microsecond 微秒
NewPeriodWithNanosecond 创建一个时间段,从 t 开始,持续 nanosecond 纳秒

类型定义

类型 名称 描述
STRUCT StateLine 状态时间线
STRUCT Period 表示一个时间段

详情信息

func CalcNextSec(sec int) int

计算下一个N秒在多少秒之后


func CalcNextSecWithTime(t time.Time, sec int) int

计算下一个N秒在多少秒之后

示例代码:


func ExampleCalcNextSecWithTime() {
	now := time.Date(2023, 9, 20, 0, 0, 3, 0, time.Local)
	fmt.Println(times.CalcNextSecWithTime(now, 10))
}


func CalcNextTimeWithRefer(now time.Time, refer time.Duration) time.Time

根据参考时间计算下一个整点时间

  • 假设当 now 为 14:15:16 , 参考时间为 10 分钟, 则返回 14:20:00
  • 假设当 now 为 14:15:16 , 参考时间为 20 分钟, 则返回 14:20:00

当 refer 小于 1 分钟时,将会返回当前时间


func IntervalFormatSet(intervalType int, str string)

针对 IntervalFormat 函数设置格式化内容


func IntervalFormat(time1 time.Time, time2 time.Time) string

返回指定时间戳之间的间隔

  • 使用传入的时间进行计算换算,将结果体现为几年前、几天前、几小时前、几分钟前、几秒前。

func GetMonthDays(t time.Time) int

获取一个时间当月共有多少天


func WeekDay(t time.Time) int

获取一个时间是星期几

  • 1 ~ 7

func GetNextDayInterval(t time.Time) time.Duration

获取一个时间到下一天间隔多少秒


func GetToday(t time.Time) time.Time

获取一个时间的今天


func GetSecond(d time.Duration) int

获取共有多少秒


func IsSameDay(t1 time.Time, t2 time.Time) bool

两个时间是否是同一天


func IsSameHour(t1 time.Time, t2 time.Time) bool

两个时间是否是同一小时


func GetMondayZero(t time.Time) time.Time

获取本周一零点


func Date(year int, month time.Month, day int) time.Time

返回一个特定日期的时间


func DateWithHMS(year int, month time.Month, day int, hour int, min int, sec int) time.Time

返回一个精确到秒的时间


func GetDeltaDay(t1 time.Time, t2 time.Time) int

获取两个时间需要加减的天数


func GetDeltaWeek(t1 time.Time, t2 time.Time) int

获取两个时间需要加减的周数


func GetHSMFromString(timeStr string, layout string) (hour int, min int, sec int)

从时间字符串中获取时分秒


func GetTimeFromString(timeStr string, layout string) time.Time

将时间字符串转化为时间


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

获取 t 增加 day 天后的零点时间


func GetYesterday(t time.Time) time.Time

获取昨天


func GetDayLast(t time.Time) time.Time

获取某天的最后一刻

  • 最后一刻即 23:59:59

func GetYesterdayLast(t time.Time) time.Time

获取昨天最后一刻


func GetMinuteStart(t time.Time) time.Time

获取一个时间的 0 秒


func GetMinuteEnd(t time.Time) time.Time

获取一个时间的 59 秒


func GetHourStart(t time.Time) time.Time

获取一个时间的 0 分 0 秒


func GetHourEnd(t time.Time) time.Time

获取一个时间的 59 分 59 秒


func GetMonthStart(t time.Time) time.Time

获取一个时间的月初


func GetMonthEnd(t time.Time) time.Time

获取一个时间的月末


func GetYearStart(t time.Time) time.Time

获取一个时间的年初


func GetYearEnd(t time.Time) time.Time

获取一个时间的年末


func NewStateLine[State generic.Basic](zero State) *StateLine[State]

创建一个从左向右由早到晚的状态时间线

查看 / 收起单元测试

func TestNewStateLine(t *testing.T) {
	sl := times.NewStateLine(0)
	sl.AddState(1, time.Now())
	sl.AddState(2, time.Now().Add(-times.Hour))
	sl.Range(func(index int, state int, ts time.Time) bool {
		t.Log(index, state, ts)
		return true
	})
	t.Log(sl.GetStateByTime(time.Now()))
}


func SetGlobalTimeOffset(offset time.Duration)

设置全局时间偏移量

查看 / 收起单元测试

func TestSetGlobalTimeOffset(t *testing.T) {
	fmt.Println(time.Now())
	times.SetGlobalTimeOffset(-times.Hour)
	fmt.Println(time.Now())
	times.SetGlobalTimeOffset(times.Hour)
	fmt.Println(time.Now())
	fmt.Println(times.NowByNotOffset())
}


func NowByNotOffset() time.Time

获取未偏移的当前时间


func GetGlobalTimeOffset() time.Duration

获取全局时间偏移量


func ResetGlobalTimeOffset()

重置全局时间偏移量


func NewPeriod(start time.Time, end time.Time) Period

创建一个时间段

  • 如果 start 比 end 晚,则会自动交换两个时间

func NewPeriodWindow(t time.Time, size time.Duration) Period

创建一个特定长度的时间窗口

查看 / 收起单元测试

func TestNewPeriodWindow(t *testing.T) {
	cur := time.Now()
	fmt.Println(cur)
	window := times.NewPeriodWindow(cur, times.Day)
	fmt.Println(window)
}


func NewPeriodWindowWeek(t time.Time) Period

创建一周长度的时间窗口,从周一零点开始至周日 23:59:59 结束


func NewPeriodWithTimeArray(times [2]time.Time) Period

创建一个时间段


func NewPeriodWithDayZero(t time.Time, day int) Period

创建一个时间段,从 t 开始,持续到 day 天后的 0 点


func NewPeriodWithDay(t time.Time, day int) Period

创建一个时间段,从 t 开始,持续 day 天


func NewPeriodWithHour(t time.Time, hour int) Period

创建一个时间段,从 t 开始,持续 hour 小时


func NewPeriodWithMinute(t time.Time, minute int) Period

创建一个时间段,从 t 开始,持续 minute 分钟


func NewPeriodWithSecond(t time.Time, second int) Period

创建一个时间段,从 t 开始,持续 second 秒


func NewPeriodWithMillisecond(t time.Time, millisecond int) Period

创建一个时间段,从 t 开始,持续 millisecond 毫秒


func NewPeriodWithMicrosecond(t time.Time, microsecond int) Period

创建一个时间段,从 t 开始,持续 microsecond 微秒


func NewPeriodWithNanosecond(t time.Time, nanosecond int) Period

创建一个时间段,从 t 开始,持续 nanosecond 纳秒


StateLine STRUCT

状态时间线

type StateLine[State generic.Basic] struct {
	states  []State
	points  []time.Time
	trigger [][]func()
}

func (*StateLine) Check(missingAllowed bool, states ...State) bool

根据状态顺序检查时间线是否合法

  • missingAllowed: 是否允许状态缺失,如果为 true,则状态可以不连续,如果为 false,则状态必须连续

状态不连续表示时间线中存在状态缺失,例如:

  • 状态为 [1, 2, 3, 4, 5] 的时间线,如果 missingAllowed 为 true,则状态为 [1, 3, 5] 也是合法的
  • 状态为 [1, 2, 3, 4, 5] 的时间线,如果 missingAllowed 为 false,则状态为 [1, 3, 5] 是不合法的

func (*StateLine) GetMissingStates(states ...State) []State

获取缺失的状态


func (*StateLine) HasState(state State) bool

检查时间线中是否包含指定状态


func (*StateLine) String() string

获取时间线的字符串表示


func (*StateLine) AddState(state State, t time.Time, onTrigger ...func ()) *StateLine[State]

添加一个状态到时间线中,状态不能与任一时间点重合,否则将被忽略

  • onTrigger: 该状态绑定的触发器,该触发器不会被主动执行,需要主动获取触发器执行

func (*StateLine) GetTimeByState(state State) time.Time

获取指定状态的时间点


func (*StateLine) GetNextTimeByState(state State) time.Time

获取指定状态的下一个时间点


func (*StateLine) GetLastState() State

获取最后一个状态


func (*StateLine) GetPrevTimeByState(state State) time.Time

获取指定状态的上一个时间点


func (*StateLine) GetIndexByState(state State) int

获取指定状态的索引


func (*StateLine) GetStateByTime(t time.Time) State

获取指定时间点的状态


func (*StateLine) GetTimeByIndex(index int) time.Time

获取指定索引的时间点


func (*StateLine) Move(d time.Duration) *StateLine[State]

时间线整体移动


func (*StateLine) GetNextStateTimeByIndex(index int) time.Time

获取指定索引的下一个时间点


func (*StateLine) GetPrevStateTimeByIndex(index int) time.Time

获取指定索引的上一个时间点


func (*StateLine) GetStateIndexByTime(t time.Time) int

获取指定时间点的索引


func (*StateLine) GetStateCount() int

获取状态数量


func (*StateLine) GetStateByIndex(index int) State

获取指定索引的状态


func (*StateLine) GetTriggerByTime(t time.Time) []func ()

获取指定时间点的触发器


func (*StateLine) GetTriggerByIndex(index int) []func ()

获取指定索引的触发器


func (*StateLine) GetTriggerByState(state State) []func ()

获取指定状态的触发器


func (*StateLine) AddTriggerToState(state State, onTrigger ...func ()) *StateLine[State]

给指定状态添加触发器


func (*StateLine) Range(handler func (index int, state State, t time.Time) bool)

按照时间顺序遍历时间线


func (*StateLine) RangeReverse(handler func (index int, state State, t time.Time) bool)

按照时间逆序遍历时间线


Period STRUCT

表示一个时间段

type Period [2]time.Time

func (Period) Start() time.Time

返回时间段的开始时间


func (Period) End() time.Time

返回时间段的结束时间


func (Period) Duration() time.Duration

返回时间段的持续时间


func (Period) Day() int

返回时间段的持续天数


func (Period) Hour() int

返回时间段的持续小时数


func (Period) Minute() int

返回时间段的持续分钟数


func (Period) Seconds() int

返回时间段的持续秒数


func (Period) Milliseconds() int

返回时间段的持续毫秒数


func (Period) Microseconds() int

返回时间段的持续微秒数


func (Period) Nanoseconds() int

返回时间段的持续纳秒数


func (Period) IsZero() bool

判断时间段是否为零值


func (Period) IsInvalid() bool

判断时间段是否无效


func (Period) IsBefore(t time.Time) bool

判断时间段是否在指定时间之前


func (Period) IsAfter(t time.Time) bool

判断时间段是否在指定时间之后


func (Period) IsBetween(t time.Time) bool

判断指定时间是否在时间段之间


func (Period) IsOngoing(t time.Time) bool

判断指定时间是否正在进行时

  • 如果时间段的开始时间在指定时间之前或者等于指定时间,且时间段的结束时间在指定时间之后,则返回 true

func (Period) IsBetweenOrEqual(t time.Time) bool

判断指定时间是否在时间段之间或者等于时间段的开始或结束时间


func (Period) IsBetweenOrEqualPeriod(t Period) bool

判断指定时间是否在时间段之间或者等于时间段的开始或结束时间


func (Period) IsOverlap(t Period) bool

判断时间段是否与指定时间段重叠


Documentation

Index

Examples

Constants

View Source
const (
	IntervalYear = iota
	IntervalDay
	IntervalHour
	IntervalMinute
	IntervalSecond
	IntervalNow
)
View Source
const (
	Nanosecond  = time.Nanosecond
	Microsecond = time.Microsecond
	Millisecond = time.Millisecond
	Second      = time.Second
	Minute      = time.Minute
	Hour        = time.Hour
	Day         = time.Hour * 24
	Week        = Day * 7
)

Variables

View Source
var (
	Zero time.Time // 零值时间
)

Functions

func CalcNextSec

func CalcNextSec(sec int) int

CalcNextSec 计算下一个N秒在多少秒之后

func CalcNextSecWithTime

func CalcNextSecWithTime(t time.Time, sec int) int

CalcNextSecWithTime 计算下一个N秒在多少秒之后

Example
package main

import (
	"fmt"
	"github.com/kercylan98/minotaur/utils/times"
	"time"
)

func main() {
	now := time.Date(2023, 9, 20, 0, 0, 3, 0, time.Local)
	fmt.Println(times.CalcNextSecWithTime(now, 10))

}
Output:

7

func CalcNextTimeWithRefer added in v0.0.18

func CalcNextTimeWithRefer(now time.Time, refer time.Duration) time.Time

CalcNextTimeWithRefer 根据参考时间计算下一个整点时间

  • 假设当 now 为 14:15:16 , 参考时间为 10 分钟, 则返回 14:20:00
  • 假设当 now 为 14:15:16 , 参考时间为 20 分钟, 则返回 14:20:00

当 refer 小于 1 分钟时,将会返回当前时间

func Date added in v0.0.2

func Date(year int, month time.Month, day int) time.Time

Date 返回一个特定日期的时间

func DateWithHMS added in v0.0.2

func DateWithHMS(year int, month time.Month, day, hour, min, sec int) time.Time

DateWithHMS 返回一个精确到秒的时间

func GetDayLast added in v0.0.28

func GetDayLast(t time.Time) time.Time

GetDayLast 获取某天的最后一刻

  • 最后一刻即 23:59:59

func GetDayZero added in v0.0.3

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

GetDayZero 获取 t 增加 day 天后的零点时间

func GetDeltaDay added in v0.0.2

func GetDeltaDay(t1, t2 time.Time) int

GetDeltaDay 获取两个时间需要加减的天数

func GetDeltaWeek added in v0.0.2

func GetDeltaWeek(t1, t2 time.Time) int

GetDeltaWeek 获取两个时间需要加减的周数

func GetGlobalTimeOffset added in v0.3.0

func GetGlobalTimeOffset() time.Duration

GetGlobalTimeOffset 获取全局时间偏移量

func GetHSMFromString added in v0.0.2

func GetHSMFromString(timeStr, layout string) (hour, min, sec int)

GetHSMFromString 从时间字符串中获取时分秒

func GetHourEnd added in v0.2.3

func GetHourEnd(t time.Time) time.Time

GetHourEnd 获取一个时间的 59 分 59 秒

func GetHourStart added in v0.2.3

func GetHourStart(t time.Time) time.Time

GetHourStart 获取一个时间的 0 分 0 秒

func GetMinuteEnd added in v0.2.3

func GetMinuteEnd(t time.Time) time.Time

GetMinuteEnd 获取一个时间的 59 秒

func GetMinuteStart added in v0.2.3

func GetMinuteStart(t time.Time) time.Time

GetMinuteStart 获取一个时间的 0 秒

func GetMondayZero

func GetMondayZero(t time.Time) time.Time

GetMondayZero 获取本周一零点

func GetMonthDays

func GetMonthDays(t time.Time) int

GetMonthDays 获取一个时间当月共有多少天

func GetMonthEnd added in v0.2.3

func GetMonthEnd(t time.Time) time.Time

GetMonthEnd 获取一个时间的月末

func GetMonthStart added in v0.2.3

func GetMonthStart(t time.Time) time.Time

GetMonthStart 获取一个时间的月初

func GetNextDayInterval

func GetNextDayInterval(t time.Time) time.Duration

GetNextDayInterval 获取一个时间到下一天间隔多少秒

func GetSecond

func GetSecond(d time.Duration) int

GetSecond 获取共有多少秒

func GetTimeFromString added in v0.0.2

func GetTimeFromString(timeStr, layout string) time.Time

GetTimeFromString 将时间字符串转化为时间

func GetToday

func GetToday(t time.Time) time.Time

GetToday 获取一个时间的今天

func GetWeekdayDateRelativeToNowWithOffset added in v0.5.5

func GetWeekdayDateRelativeToNowWithOffset(now time.Time, week time.Weekday, offsetWeeks int) time.Time

GetWeekdayDateRelativeToNowWithOffset 获取相对于当前日期所在周的指定星期的日期,可以根据需要进行周数的偏移。

  • now:当前时间。
  • week:要获取日期的目标星期。
  • offsetWeeks:要偏移的周数,正数表示向未来偏移,负数表示向过去偏移。

该函数通常适用于排行榜等场景,例如排行榜为每周六更新,那么通过该函数可以获取到上周排行榜、本周排行榜的准确日期

该函数将不会保留 now 的时分秒信息,如果需要,可使用 GetWeekdayTimeRelativeToNowWithOffset 函数

func GetWeekdayTimeRelativeToNowWithOffset added in v0.5.5

func GetWeekdayTimeRelativeToNowWithOffset(now time.Time, week time.Weekday, offsetWeeks int) time.Time

GetWeekdayTimeRelativeToNowWithOffset 获取相对于当前日期所在周的指定星期的日期,并根据传入的 now 参数保留时、分、秒等时间信息。

  • 参数解释可参考 GetWeekdayDateRelativeToNowWithOffset 函数

func GetYearEnd added in v0.2.3

func GetYearEnd(t time.Time) time.Time

GetYearEnd 获取一个时间的年末

func GetYearStart added in v0.2.3

func GetYearStart(t time.Time) time.Time

GetYearStart 获取一个时间的年初

func GetYesterday added in v0.0.28

func GetYesterday(t time.Time) time.Time

GetYesterday 获取昨天

func GetYesterdayLast added in v0.0.28

func GetYesterdayLast(t time.Time) time.Time

GetYesterdayLast 获取昨天最后一刻

func IntervalFormat

func IntervalFormat(time1, time2 time.Time) string

IntervalFormat 返回指定时间戳之间的间隔

  • 使用传入的时间进行计算换算,将结果体现为几年前、几天前、几小时前、几分钟前、几秒前。

func IntervalFormatSet

func IntervalFormatSet(intervalType int, str string)

IntervalFormatSet 针对 IntervalFormat 函数设置格式化内容

func IsSameDay

func IsSameDay(t1, t2 time.Time) bool

IsSameDay 两个时间是否是同一天

func IsSameHour

func IsSameHour(t1, t2 time.Time) bool

IsSameHour 两个时间是否是同一小时

func NowByNotOffset added in v0.3.0

func NowByNotOffset() time.Time

NowByNotOffset 获取未偏移的当前时间

func ResetGlobalTimeOffset added in v0.3.0

func ResetGlobalTimeOffset()

ResetGlobalTimeOffset 重置全局时间偏移量

func SetGlobalTimeOffset added in v0.3.0

func SetGlobalTimeOffset(offset time.Duration)

SetGlobalTimeOffset 设置全局时间偏移量

func ToSecDuration added in v0.5.4

func ToSecDuration[V generic.Number](v V) time.Duration

ToSecDuration 转换为秒级 time.Duration

func WeekDay

func WeekDay(t time.Time) int

WeekDay 获取一个时间是星期几

  • 1 ~ 7

Types

type Period added in v0.0.3

type Period [2]time.Time

Period 表示一个时间段

func NewPeriod added in v0.0.3

func NewPeriod(start, end time.Time) Period

NewPeriod 创建一个时间段

  • 如果 start 比 end 晚,则会自动交换两个时间

func NewPeriodWindow added in v0.2.3

func NewPeriodWindow(t time.Time, size time.Duration) Period

NewPeriodWindow 创建一个特定长度的时间窗口

func NewPeriodWindowWeek added in v0.2.3

func NewPeriodWindowWeek(t time.Time) Period

NewPeriodWindowWeek 创建一周长度的时间窗口,从周一零点开始至周日 23:59:59 结束

func NewPeriodWithDay added in v0.0.3

func NewPeriodWithDay(t time.Time, day int) Period

NewPeriodWithDay 创建一个时间段,从 t 开始,持续 day 天

func NewPeriodWithDayZero added in v0.0.3

func NewPeriodWithDayZero(t time.Time, day int) Period

NewPeriodWithDayZero 创建一个时间段,从 t 开始,持续到 day 天后的 0 点

func NewPeriodWithHour added in v0.0.3

func NewPeriodWithHour(t time.Time, hour int) Period

NewPeriodWithHour 创建一个时间段,从 t 开始,持续 hour 小时

func NewPeriodWithMicrosecond added in v0.0.3

func NewPeriodWithMicrosecond(t time.Time, microsecond int) Period

NewPeriodWithMicrosecond 创建一个时间段,从 t 开始,持续 microsecond 微秒

func NewPeriodWithMillisecond added in v0.0.3

func NewPeriodWithMillisecond(t time.Time, millisecond int) Period

NewPeriodWithMillisecond 创建一个时间段,从 t 开始,持续 millisecond 毫秒

func NewPeriodWithMinute added in v0.0.3

func NewPeriodWithMinute(t time.Time, minute int) Period

NewPeriodWithMinute 创建一个时间段,从 t 开始,持续 minute 分钟

func NewPeriodWithNanosecond added in v0.0.3

func NewPeriodWithNanosecond(t time.Time, nanosecond int) Period

NewPeriodWithNanosecond 创建一个时间段,从 t 开始,持续 nanosecond 纳秒

func NewPeriodWithSecond added in v0.0.3

func NewPeriodWithSecond(t time.Time, second int) Period

NewPeriodWithSecond 创建一个时间段,从 t 开始,持续 second 秒

func NewPeriodWithTimeArray added in v0.0.3

func NewPeriodWithTimeArray(times [2]time.Time) Period

NewPeriodWithTimeArray 创建一个时间段

func (Period) Day added in v0.0.3

func (slf Period) Day() int

Day 返回时间段的持续天数

func (Period) Duration added in v0.0.3

func (slf Period) Duration() time.Duration

Duration 返回时间段的持续时间

func (Period) End added in v0.0.3

func (slf Period) End() time.Time

End 返回时间段的结束时间

func (Period) Hour added in v0.0.3

func (slf Period) Hour() int

Hour 返回时间段的持续小时数

func (Period) IsAfter added in v0.0.3

func (slf Period) IsAfter(t time.Time) bool

IsAfter 判断时间段是否在指定时间之后

func (Period) IsBefore added in v0.0.3

func (slf Period) IsBefore(t time.Time) bool

IsBefore 判断时间段是否在指定时间之前

func (Period) IsBetween added in v0.0.3

func (slf Period) IsBetween(t time.Time) bool

IsBetween 判断指定时间是否在时间段之间

func (Period) IsBetweenOrEqual added in v0.0.3

func (slf Period) IsBetweenOrEqual(t time.Time) bool

IsBetweenOrEqual 判断指定时间是否在时间段之间或者等于时间段的开始或结束时间

func (Period) IsBetweenOrEqualPeriod added in v0.0.3

func (slf Period) IsBetweenOrEqualPeriod(t Period) bool

IsBetweenOrEqualPeriod 判断指定时间是否在时间段之间或者等于时间段的开始或结束时间

func (Period) IsInvalid added in v0.0.3

func (slf Period) IsInvalid() bool

IsInvalid 判断时间段是否无效

func (Period) IsOngoing added in v0.0.3

func (slf Period) IsOngoing(t time.Time) bool

IsOngoing 判断指定时间是否正在进行时

  • 如果时间段的开始时间在指定时间之前或者等于指定时间,且时间段的结束时间在指定时间之后,则返回 true

func (Period) IsOverlap added in v0.0.3

func (slf Period) IsOverlap(t Period) bool

IsOverlap 判断时间段是否与指定时间段重叠

func (Period) IsZero added in v0.0.3

func (slf Period) IsZero() bool

IsZero 判断时间段是否为零值

func (Period) Microseconds added in v0.0.3

func (slf Period) Microseconds() int

Microseconds 返回时间段的持续微秒数

func (Period) Milliseconds added in v0.0.3

func (slf Period) Milliseconds() int

Milliseconds 返回时间段的持续毫秒数

func (Period) Minute added in v0.0.3

func (slf Period) Minute() int

Minute 返回时间段的持续分钟数

func (Period) Nanoseconds added in v0.0.3

func (slf Period) Nanoseconds() int

Nanoseconds 返回时间段的持续纳秒数

func (Period) Seconds added in v0.0.3

func (slf Period) Seconds() int

Seconds 返回时间段的持续秒数

func (Period) Start added in v0.0.3

func (slf Period) Start() time.Time

Start 返回时间段的开始时间

type StateLine added in v0.3.2

type StateLine[State generic.Basic] struct {
	// contains filtered or unexported fields
}

StateLine 状态时间线

func NewStateLine added in v0.3.2

func NewStateLine[State generic.Basic](zero State) *StateLine[State]

NewStateLine 创建一个从左向右由早到晚的状态时间线

func (*StateLine[State]) AddState added in v0.3.2

func (slf *StateLine[State]) AddState(state State, t time.Time, onTrigger ...func()) *StateLine[State]

AddState 添加一个状态到时间线中,状态不能与任一时间点重合,否则将被忽略

  • onTrigger: 该状态绑定的触发器,该触发器不会被主动执行,需要主动获取触发器执行

func (*StateLine[State]) AddTriggerToState added in v0.3.2

func (slf *StateLine[State]) AddTriggerToState(state State, onTrigger ...func()) *StateLine[State]

AddTriggerToState 给指定状态添加触发器

func (*StateLine[State]) Check added in v0.3.2

func (slf *StateLine[State]) Check(missingAllowed bool, states ...State) bool

Check 根据状态顺序检查时间线是否合法

  • missingAllowed: 是否允许状态缺失,如果为 true,则状态可以不连续,如果为 false,则状态必须连续

状态不连续表示时间线中存在状态缺失,例如:

  • 状态为 [1, 2, 3, 4, 5] 的时间线,如果 missingAllowed 为 true,则状态为 [1, 3, 5] 也是合法的
  • 状态为 [1, 2, 3, 4, 5] 的时间线,如果 missingAllowed 为 false,则状态为 [1, 3, 5] 是不合法的

func (*StateLine[State]) GetIndexByState added in v0.3.2

func (slf *StateLine[State]) GetIndexByState(state State) int

GetIndexByState 获取指定状态的索引

func (*StateLine[State]) GetLastState added in v0.3.2

func (slf *StateLine[State]) GetLastState() State

GetLastState 获取最后一个状态

func (*StateLine[State]) GetMissingStates added in v0.3.2

func (slf *StateLine[State]) GetMissingStates(states ...State) []State

GetMissingStates 获取缺失的状态

func (*StateLine[State]) GetNextStateTimeByIndex added in v0.3.2

func (slf *StateLine[State]) GetNextStateTimeByIndex(index int) time.Time

GetNextStateTimeByIndex 获取指定索引的下一个时间点

func (*StateLine[State]) GetNextTimeByState added in v0.3.2

func (slf *StateLine[State]) GetNextTimeByState(state State) time.Time

GetNextTimeByState 获取指定状态的下一个时间点

func (*StateLine[State]) GetPrevStateTimeByIndex added in v0.3.2

func (slf *StateLine[State]) GetPrevStateTimeByIndex(index int) time.Time

GetPrevStateTimeByIndex 获取指定索引的上一个时间点

func (*StateLine[State]) GetPrevTimeByState added in v0.3.2

func (slf *StateLine[State]) GetPrevTimeByState(state State) time.Time

GetPrevTimeByState 获取指定状态的上一个时间点

func (*StateLine[State]) GetStateByIndex added in v0.3.2

func (slf *StateLine[State]) GetStateByIndex(index int) State

GetStateByIndex 获取指定索引的状态

func (*StateLine[State]) GetStateByTime added in v0.3.2

func (slf *StateLine[State]) GetStateByTime(t time.Time) State

GetStateByTime 获取指定时间点的状态

func (*StateLine[State]) GetStateCount added in v0.3.2

func (slf *StateLine[State]) GetStateCount() int

GetStateCount 获取状态数量

func (*StateLine[State]) GetStateIndexByTime added in v0.3.2

func (slf *StateLine[State]) GetStateIndexByTime(t time.Time) int

GetStateIndexByTime 获取指定时间点的索引

func (*StateLine[State]) GetTimeByIndex added in v0.3.2

func (slf *StateLine[State]) GetTimeByIndex(index int) time.Time

GetTimeByIndex 获取指定索引的时间点

func (*StateLine[State]) GetTimeByState added in v0.3.2

func (slf *StateLine[State]) GetTimeByState(state State) time.Time

GetTimeByState 获取指定状态的时间点

func (*StateLine[State]) GetTriggerByIndex added in v0.3.2

func (slf *StateLine[State]) GetTriggerByIndex(index int) []func()

GetTriggerByIndex 获取指定索引的触发器

func (*StateLine[State]) GetTriggerByState added in v0.3.2

func (slf *StateLine[State]) GetTriggerByState(state State) []func()

GetTriggerByState 获取指定状态的触发器

func (*StateLine[State]) GetTriggerByTime added in v0.3.2

func (slf *StateLine[State]) GetTriggerByTime(t time.Time) []func()

GetTriggerByTime 获取指定时间点的触发器

func (*StateLine[State]) HasState added in v0.3.2

func (slf *StateLine[State]) HasState(state State) bool

HasState 检查时间线中是否包含指定状态

func (*StateLine[State]) Move added in v0.3.2

func (slf *StateLine[State]) Move(d time.Duration) *StateLine[State]

Move 时间线整体移动

func (*StateLine[State]) Range added in v0.3.2

func (slf *StateLine[State]) Range(handler func(index int, state State, t time.Time) bool)

Range 按照时间顺序遍历时间线

func (*StateLine[State]) RangeReverse added in v0.3.2

func (slf *StateLine[State]) RangeReverse(handler func(index int, state State, t time.Time) bool)

RangeReverse 按照时间逆序遍历时间线

func (*StateLine[State]) String added in v0.3.2

func (slf *StateLine[State]) String() string

String 获取时间线的字符串表示

Jump to

Keyboard shortcuts

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