2026a

# Time


表示时间点的类型

函数库: TyBase

# 语法

Time(h, [mi], [s], [ms], [us], [ns])
Time(dt::DateTime)
Time(f::Function, h, mi=0; step::Period=Second(1), limit::Int=10000)
Time(f::Function, h, mi, s; step::Period=Millisecond(1), limit::Int=10000)
Time(f::Function, h, mi, s, ms; step::Period=Microsecond(1), limit::Int=10000)
Time(f::Function, h, mi, s, ms, us; step::Period=Nanosecond(1), limit::Int=10000)
Time(t::AbstractString, format::AbstractString; locale="english")
Time(t::AbstractString, df::DateFormat=ISOTimeFormat)

# 说明

Time(h, [mi], [s], [ms], [us], [ns]) 按部分构造一个 Time 类型。参数必须可转换为 Int64。示例


Time(dt::DateTime) 将 DateTime 类型的日期和时间转换成 Time 类型。微秒和纳秒部分设置为 0。 示例


Time(f::Function, h, mi=0; step::Period=Second(1), limit::Int=10000)
Time(f::Function, h, mi, s; step::Period=Millisecond(1), limit::Int=10000)
Time(f::Function, h, mi, s, ms; step::Period=Microsecond(1), limit::Int=10000)
Time(f::Function, h, mi, s, ms, us; step::Period=Nanosecond(1), limit::Int=10000)

通过调整器创建时间起点将从提供的 h, mi, s, ms, us 参数构造,并在 f::Function 返回 true 之前进行调整。可以通过 step 关键字手动提供调整步骤。limit 提供了对调整 API 在抛出错误之前将追求的最大迭代次数的限制(以防不满足 f::Function)。 示例


Time(t::AbstractString, format::AbstractString; locale="english") 通过按照格式字符串中给定的模式解析 t 时间字符串来构造 Time(有关语法,请参阅 DateFormat)。 示例


Time(t::AbstractString, df::DateFormat=ISOTimeFormat) 通过按照 DateFormat 对象中给定的模式解析 t 时间字符串来构造 Time,如果省略则为 dateformat"HH:MM:SS.s"。与 Time(::AbstractString, ::AbstractString) 类似,但在使用预先创建的 DateFormat 对象重复解析类似格式的日期时间字符串时效率更高。 示例

# 示例

按部分创建时间

按时、分、秒、毫秒、微秒、纳秒创建时间。分、秒、毫秒、微秒、纳秒缺省定义为 0。

using TyBase

Time(12,3,26)
12:03:26
Time(12,6,45,28,568,9)
12:06:45.028568009
将 DateTime 转换为 Time

首先创建 DateTime 类型的日期和时间。

using TyBase

dt = DateTime(2022, 1, 18, 12, 38, 49)
2022-01-18T12:38:49

将 DateTime 类型转换成 Time 类型,微秒、纳秒设置为 0。

Time(dt)
12:38:49
用函数迭代生成指定时间

从 20:00:00 开始,以 1 秒为步长迭代生成 20:30:00。

using TyBase

Time(t -> Dates.minute(t) == 30, 20)
20:30:00

从 03:00:00 开始,以 1 秒为步长迭代生成 10:00:00。

Dates.Time(t -> Dates.hour(t) == 10, 3; limit = 5)
ERROR: ArgumentError: Adjustment limit reached: 5 iterations
Stacktrace:
[...]

由于最大迭代次数设置为 5 次,以 1 秒的步长迭代 5 次无法达到 Dates.hour(t) == 10,因此抛出错误。

用字符串生成指定时间

指定 DateFormat ,将字符串转换成 Time。

using TyBase

Time("12-12-01","H-M-S")
12:12:01

不指定 DateFormat 时,将默认格式为 "HH:MM:SS.s" 的字符串转换为 Time。

Time("06:40:00")
06:40:00

# 输入参数

h - 小时数
整数

小时数,指定为整数。每个小时数都是一个从 0 到 23 的整数值;若分钟数、秒数、毫秒数全为 0,则小时数可以为 24。

mi - 分钟数
整数

分钟数,指定为整数。每个分钟数都是一个从 0 到 59 的整数值。

s - 秒数
整数

秒数,指定为整数。每个秒数都是一个从 0 到 59 的整数值。

ms - 毫秒数
整数

毫秒数,指定为整数。每个毫秒数都是一个从 0 到 999 的整数值。

us - 微秒数
整数

微秒数,指定为整数。每个微秒数都是一个从 0 到 999 的整数值。

ns - 纳秒数
整数

纳秒数,指定为整数。每个纳秒数都是一个从 0 到 999 的整数值。

dt - 日期和时间
DateTime

日期和时间,指定为 DateTime 类型。

f - 迭代终止函数
函数

迭代终止函数,指定为函数类型。当以步长迭代创建 DateTime 时,满足 f 返回 true 时迭代才终止。

step - 迭代步长
Period

迭代步长,指定为 Period 类型。

  • 若输入起始时间最小单位为小时或分钟,则默认迭代步长 step = Second(1);

  • 若输入起始时间最小单位为秒,则默认迭代步长 step = Millisecond(1);

  • 若输入起始时间最小单位为毫秒,则默认迭代步长 step = Microsecond(1);

  • 若输入起始时间最小单位为微秒,则默认迭代步长 step = Nanosecond(1)。

limit - 最高迭代次数
整数

最高迭代次数,指定为整数。最高迭代次数默认为 limit = 10000。

t - 时间
字符串

时间,指定为字符串。

format - 输入格式
字符串

输入格式,指定为字符串。语法参考 DateFormat

locale - 月份解析方式
english(默认)

月份解析方式,默认为 english。

df - 输入格式
ISODateTimeFormat(默认)

输入格式,默认为 ISODateTimeFormat。

# 另请参阅

DateFormat | Date | DateTime