# 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