# DateTime
表示日期和时间点的类型
函数库: TyBase
# 语法
DateTime(y, [m], [d], [h], [mi], [s], [ms])
DateTime(dt::Date, t::Time)
DateTime(dt::Date)
DateTime(f::Function, y, [m], [d], [h], [mi], [s]; step=Day(1), limit=10000)
DateTime(dts::AbstractString, format::AbstractString; locale="english")
DateTime(dts::AbstractString, df::DateFormat=ISODateTimeFormat)
# 说明
DateTime(y, [m], [d], [h], [mi], [s], [ms]) 按部分构造一个 DateTime 类型。参数必须可转换为 Int64。示例
DateTime(dt::Date, t::Time) 按日期和时间构造一个 DateTime 类型。Time 类型中的非零微秒或纳秒将导致 InexactError。 示例
DateTime(dt::Date) 将 Date 类型的日期转换成 DateTime 类型。时、分、秒、毫秒部分设置为 0。 示例
DateTime(f::Function, y, [m], [d], [h], [mi], [s]; step=Day(1), limit=10000) 通过调整器 API 创建一个 DateTime。起点将根据提供的 y、m、d...参数构造,并将进行调整,直到f::Function 返回 true。调整步长可以通过 step 关键字手动提供。limit 提供了对调整 API 在抛出错误之前将追求的最大迭代次数的限制(在f::Function永远不会满足的情况下)。示例
DateTime(dts::AbstractString, format::AbstractString; locale="english") 通过按照格式字符串中给定的模式解析 dts 日期时间字符串来构造 DateTime(有关语法,请参阅 DateFormat)。 示例
DateTime(dts::AbstractString, df::DateFormat=ISODateTimeFormat) 通过按照 DateFormat 对象中给定的模式解析 dts 日期时间字符串来构造 DateTime,如果省略则为 dateformat"yyyy-mm-ddTHH:MM:SS.s"。与 DateTime(::AbstractString, ::AbstractString) 类似,但在使用预先创建的 DateFormat 对象重复解析类似格式的日期时间字符串时效率更高。 示例
# 示例
按部分创建日期和时间
按年、月、日、时、分、秒、毫秒创建时间。日和月缺省定义为 1 ,时、分、秒、毫秒缺省定义为 0。
using TyBase
DateTime(2016,3,26)
2016-03-26T00:00:00
DateTime(2016,3,26,12,6,45,28)
2016-03-26T12:06:45.028
按 Date 和 Time 创建日期和时间
首先创建 Date 类型的日期和 Time 类型的时间。
using TyBase
d = Date(2018, 1, 1)
2018-01-01
t = Time(8, 15, 42)
08:15:42
DateTime 函数能将上面两个变量生成日期和时间类型。
DateTime(d, t)
2018-01-01T08:15:42
将 Date 转换为 DateTime
首先创建 Date 类型的日期。
using TyBase
d = Date(2022, 1, 18)
2022-01-18
将 Date 类型转换成 DateTime 类型,时、分、秒、毫秒为 0。
DateTime(d)
2022-01-18T00:00:00
用函数迭代生成指定日期和时间
从 2010-10-20 的 10:00:00 开始,以 1 秒为步长迭代生成 10:00:40。
using TyBase
DateTime(dt -> Dates.second(dt) == 40, 2010, 10, 20, 10; step = Dates.Second(1))
2010-10-20T10:00:40
从 2010-10-20 的 10:00:00 开始,以 1 小时为步长迭代生成 20:00:00。
DateTime(dt -> Dates.hour(dt) == 20, 2010, 10, 20, 10; step = Dates.Hour(1), limit = 5)
ERROR: ArgumentError: Adjustment limit reached: 5 iterations
Stacktrace:
[...]
由于最大迭代次数设置为 5 次,以 1 小时的步长迭代 5 次无法达到 Dates.hour(dt) == 20,因此抛出错误。
用字符串生成指定日期和时间
指定 DateFormat ,将字符串转换成 DateTime。
using TyBase
DateTime("2012-12-01","yyyy-mm-dd")
2012-12-01T00:00:00
DateTime("2021-Jan-1","Y-u-d")
2021-01-01T00:00:00
不指定 DateFormat 时,将默认格式为 "yyyy-mm-ddTHH:MM:SS.s" 的字符串转换为 DateTime。
DateTime("2021-12-19T06:40:00")
2021-12-19T06:40:00
# 输入参数
y - 年份数整数
年份数,指定为整数。不足 4 位数的年份数在数值前面自动补全 0。
m - 月份数整数
月份数,指定为整数。每个月份数都是一个从 1 到 12 的整数值。
d - 月中日期值整数
月中日期值,指定为整数。每个代表月中的天的数字都是一个介于 1 到 28、29、30 或 31 的整数值,具体取决于月和年。
h - 小时数整数
小时数,指定为整数。每个小时数都是一个从 0 到 23 的整数值;若分钟数、秒数、毫秒数全为 0,则小时数可以为 24。
mi - 分钟数整数
分钟数,指定为整数。每个分钟数都是一个从 0 到 59 的整数值。
s - 秒数整数
秒数,指定为整数。每个秒数都是一个从 0 到 59 的整数值。
ms - 毫秒数整数
秒数,指定为整数。每个毫秒数都是一个从 0 到 999 的整数值。
dt - 日期Date
日期,指定为 Date 类型。
t - 时间Time
时间,指定为 Time 类型。
f - 迭代终止函数函数
迭代终止函数,指定为函数类型。当以步长迭代创建 DateTime 时,满足 f 返回 true 时迭代才终止。
step - 迭代步长Period
迭代步长,指定为 Period 类型。迭代步长默认为 step = Day(1)。
limit - 最高迭代次数整数
最高迭代次数,指定为整数。最高迭代次数默认为 limit = 10000。
dts - 日期和时间字符串
日期和时间,指定为字符串。
format - 输入格式字符串
输入格式,指定为字符串。语法参考 DateFormat。
locale - 月份解析方式english(默认)
月份解析方式,默认为 english。
df - 输入格式ISODateTimeFormat(默认)
输入格式,默认为 ISODateTimeFormat。
# 另请参阅
DateFormat | Date | Time