public struct DateTime <: ToString & Hashable & Comparable<DateTime>
功能:DateTime 表示日期时间,是一个描述某一时间点的时间类型,提供了基于时区的日期时间读取、计算、比较、转换,以及序列化和反序列化等功能。
DateTime 是不可变的类型,包含了日期,时间和时区信息。可表示的时间区间为 [-999,999,999-01-01T00:00:00.000000000, 999,999,999-12-31T23:59:59.999999999],该区间适用于任何合法的时区。
以下为 DateTime 中 now 和 nowUTC 函数获取当前时间使用的系统调用函数:
| 系统 | 系统调用函数 | 时钟类型 |
|---|---|---|
| Linux | clock_gettime | CLOCK_REALTIME |
| Windows | clock_gettime | CLOCK_REALTIME |
| macOS | clock_gettime | CLOCK_REALTIME |
public static prop UnixEpoch: DateTime
功能:获取 Unix 时间纪元,即表示零时区 1970年1月1日0时0分0秒0纳秒 的 DateTime 实例。
类型:DateTime
public prop zoneOffset: Duration
功能:获取 DateTime 实例所关联的 TimeZone 实例的时间偏移。
类型:Duration
public static func fromUnixTimeStamp(d: Duration): DateTime
功能:获取自 UnixEpoch 开始,参数 d 指定时间间隔后的日期时间。
参数:
返回值:
异常:
public static func now(timeZone!: TimeZone = TimeZone.Local): DateTime
功能:获取参数 timeZone 指定时区的当前时间。该方法获取的当前时间受系统时间影响,如存在使用不受系统时间影响的计时场景,可使用 MonoTime.now() 替代。
参数:
返回值:
public static func nowUTC(): DateTime
功能:获取 UTC 时区的当前时间。该方法获取的当前时间受系统时间影响,如存在使用不受系统时间影响的计时场景,可使用 MonoTime.now() 替代。
返回值:
public static func of(
year!: Int64,
month!: Int64,
dayOfMonth!: Int64,
hour!: Int64 = 0,
minute!: Int64 = 0,
second!: Int64 = 0,
nanosecond!: Int64 = 0,
timeZone!: TimeZone = TimeZone.Local
): DateTime 功能:根据参数指定的年、月、日、时、分、秒、纳秒、时区构造 DateTime 实例。
参数:
返回值:
异常:
public static func of(
year!: Int64,
month!: Month,
dayOfMonth!: Int64,
hour!: Int64 = 0,
minute!: Int64 = 0,
second!: Int64 = 0,
nanosecond!: Int64 = 0,
timeZone!: TimeZone = TimeZone.Local
): DateTime 功能:根据参数指定的年、月、日、时、分、秒、纳秒、时区构造 DateTime 实例。
参数:
返回值:
异常:
public static func ofEpoch(second!: Int64, nanosecond!: Int64): DateTime
功能:根据入参 second 和 nanosecond 构造 DateTime 实例。入参 second 表示 unix 时间的秒部分,nanosecond 表示 unix 时间的纳秒部分。unix 时间以 UnixEpoch 开始计算,nanosecond 的范围不可以超过[0, 999,999,999],否则抛出异常。
参数:
返回值:
异常:
public static func ofUTC(
year!: Int64,
month!: Int64,
dayOfMonth!: Int64,
hour!: Int64 = 0,
minute!: Int64 = 0,
second!: Int64 = 0,
nanosecond!: Int64 = 0
): DateTime 功能:根据参数指定的年、月、日、时、分、秒、纳秒构造 UTC 时区 DateTime 实例。
参数:
返回值:
异常:
public static func ofUTC(
year!: Int64,
month!: Month,
dayOfMonth!: Int64,
hour!: Int64 = 0,
minute!: Int64 = 0,
second!: Int64 = 0,
nanosecond!: Int64 = 0
): DateTime 功能:根据参数指定的年、月、日、时、分、秒、纳秒构造 UTC 时区 DateTime 实例。
参数:
返回值:
异常:
public static func parse(str: String): DateTime
功能:从参数 str 中解析得到时间,解析成功时返回 DateTime 实例。
参数:
返回值:
异常:
public static func parse(str: String, format: String): DateTime
功能:根据 format 指定的时间格式,从字符串 str 中解析得到时间,解析成功时返回 DateTime 实例,解析具体规格可见下文“从字符串中解析得到时间”模块。
参数:
返回值:
异常:
public func addDays(n: Int64): DateTime
功能:获取 DateTime 实例 n 天之后的时间,返回新的 DateTime 实例。
参数:
返回值:
异常:
public func addHours(n: Int64): DateTime
功能:获取 DateTime 实例 n 小时之后的时间,返回新的 DateTime 实例。
参数:
返回值:
异常:
public func addMinutes(n: Int64): DateTime
功能:获取 DateTime 实例 n 分钟之后的时间,返回新的 DateTime 实例。
参数:
返回值:
异常:
public func addMonths(n: Int64): DateTime
功能:获取 DateTime 实例 n 月之后的时间,返回新的 DateTime 实例。
由于月的间隔不固定,若设 dt 表示 “2020年3月30日”,dt.addMonths(1) 不会返回非法日期“2020年3月31日”。为了尽量返回有效的日期,会偏移到当月最后一天,返回“2020年4月30日”。
参数:
返回值:
异常:
public func addNanoseconds(n: Int64): DateTime
功能:获取 DateTime 实例 n 纳秒之后的时间,返回新的 DateTime 实例。
参数:
返回值:
异常:
public func addSeconds(n: Int64): DateTime
功能:获取 DateTime 实例 n 秒之后的时间,返回新的 DateTime 实例。
参数:
返回值:
异常:
public func addWeeks(n: Int64): DateTime
功能:获取 DateTime 实例 n 周之后的时间,返回新的 DateTime 实例。
参数:
返回值:
异常:
功能:获取入参 n 周之后的时间,返回新的 DateTime 实例。
public func addYears(n: Int64): DateTime
功能:获取 DateTime 实例 n 年之后的时间,返回新的 DateTime 实例。
由于年的间隔不固定,若设 dt 表示 “2020年2月29日”,dt.addYears(1) 不会返回非法日期“2021年2月29日”。为了尽量返回有效的日期,会偏移到当月最后一天,返回 “2021年2月28日”。
参数:
返回值:
异常:
public func compare(rhs: DateTime): Ordering
功能:判断一个 DateTime 实例与参数 rhs 的大小关系。如果大于,返回 Ordering.GT;如果等于,返回 Ordering.EQ;如果小于,返回 Ordering.LT。
参数:
返回值:
public func inLocal(): DateTime
功能:获取 DateTime 实例在本地时区的时间。
返回值:
异常:
public func inTimeZone(timeZone: TimeZone): DateTime
功能:获取 DateTime 实例在参数 timeZone 指定时区的时间。
参数:
返回值:
异常:
public func inUTC(): DateTime
功能:获取 DateTime 实例在 UTC 时区的时间。
返回值:
异常:
public func toString(): String
功能:返回一个表示 DateTime 实例的字符串,其格式为 RFC3339 中 date-time 格式,如果时间包含纳秒信息(不为零),会打印出小数秒。
返回值:
public func toString(format: String): String
功能:返回一个表示 DateTime 实例的字符串,其格式由参数 format 指定。格式说明详见时间字符串格式
参数:
返回值:
异常:
public operator func !=(r: DateTime): Bool
功能:判断当前 DateTime 实例是否不等于 r。
若两个 DateTime 不相等,那么它们指向的不是同一 UTC 时间。
参数:
返回值:
public operator func +(r: Duration): DateTime
功能:实现 DateTime 类型和 Duration 类型加法,即 DateTime + Duration 运算。
参数:
返回值:
异常:
public operator func -(r: DateTime): Duration
功能:实现 DateTime 类型之间的减法,即 DateTime - DateTime 运算。
参数:
返回值:
public operator func -(r: Duration): DateTime
功能:实现 DateTime 类型和 Duration 类型减法,即 DateTime - Duration 运算。
参数:
返回值:
异常:
public operator func <(r: DateTime): Bool
功能:判断当前 DateTime 实例是否早于 r(指向更早的 UTC 时间的 DateTime 更小)。
参数:
返回值:
public operator func <=(r: DateTime): Bool
功能:判断当前 DateTime 实例是否早于或等于 r(指向更早的 UTC 时间的 DateTime 更小)。
参数:
返回值:
public operator func ==(r: DateTime): Bool
功能:判断当前 DateTime 实例是否等于 r。
若两个 DateTime 相等,那么它们指向同一 UTC 时间。
参数:
返回值:
public operator func >(r: DateTime): Bool
功能:判断当前 DateTime 实例是否晚于 r(指向更晚的 UTC 时间的 DateTime 更大)。
参数:
返回值:
public operator func >=(r: DateTime): Bool
功能:判断当前 DateTime 实例是否晚于或等于 r(指向更晚的 UTC 时间的 DateTime 更大)。
参数:
返回值:
public struct Duration <: ToString & Hashable & Comparable<Duration>
功能:Duration 表示时间间隔,是一个描述一段时间的时间类型,提供了常用的静态实例,以及计算、比较等功能。
public static prop microsecond: Duration
功能:表示 1 微秒时间间隔的 Duration 实例。
类型:Duration
public static prop millisecond: Duration
功能:表示 1 毫秒时间间隔的 Duration 实例。
类型:Duration
public static prop nanosecond: Duration
功能:表示 1 纳秒时间间隔的 Duration 实例。
类型:Duration
public static func since(t: DateTime): Duration
功能:计算从参数 t 开始到当前时间为止的时间间隔。
参数:
返回值:
public static func until(t: DateTime): Duration
功能:计算从当前时间开始到参数 t 为止的时间间隔。
参数:
返回值:
public func abs(): Duration
功能:返回一个新的 Duration 实例,其值大小为当前 Duration 实例绝对值。
返回值:
异常:
public func compare(rhs: Duration): Ordering
功能:比较当前 Duration 实例与另一个 Duration 实例的关系,如果大于,返回 Ordering.GT;如果等于,返回 Ordering.EQ;如果小于,返回 Ordering.LT。
参数:
返回值:
public func toMicroseconds(): Int64
功能:获得当前 Duration 实例以微秒为单位的整数大小。
返回值:
异常:
public func toMilliseconds(): Int64
功能:获得当前 Duration 实例以毫秒为单位的整数大小。
返回值:
异常:
public func toNanoseconds(): Int64
功能:获得当前 Duration 实例以纳秒为单位的整数大小,向绝对值小的方向取整。
返回值:
异常:
public func toString(): String
功能:获得当前 Duration 实例的字符串表示,格式形如:"1d2h3m4s5ms6us7ns",表示“1天2小时3分钟4秒5毫秒6微秒7纳秒”。某个单位下数值为 0 时此项会被省略,特别地,当所有单位下数值都为 0 时,返回 "0s"。
返回值:
public operator func !=(r: Duration): Bool
功能:判断当前 Duration 实例是否不等于 r。
参数:
返回值:
public operator func *(r: Float64): Duration
功能:实现 Duration 类型与 Float64 类型的乘法,即 Duration * Float64 运算。
参数:
返回值:
异常:
public operator func *(r: Int64): Duration
功能:实现 Duration 类型与 Int64 类型的乘法,即 Duration * Int64 运算。
参数:
返回值:
异常:
public operator func +(r: Duration): Duration
功能:实现 Duration 类型之间的加法,即 Duration + Duration 运算。
参数:
返回值:
异常:
public operator func -(r: Duration): Duration
功能:实现 Duration 类型之间的减法,即 Duration - Duration 运算。
参数:
返回值:
异常:
public operator func /(r: Duration): Float64
功能:实现 Duration 类型与 Duration 类型的除法,即 Duration / Duration 运算。
参数:
返回值:
异常:
public operator func /(r: Float64): Duration
功能:实现 Duration 类型与 Float64 类型的除法,即 Duration / Float64 运算。
参数:
返回值:
异常:
public operator func /(r: Int64): Duration
功能:实现 Duration 类型与 Int64 类型的除法,即 Duration / Int64 运算。
参数:
返回值:
异常:
public operator func <(r: Duration): Bool
功能:判断当前 Duration 实例是否小于 r。
参数:
返回值:
public operator func <=(r: Duration): Bool
功能:判断当前 Duration 实例是否小于等于 r。
参数:
返回值:
public operator func ==(r: Duration): Bool
功能:判断当前 Duration 实例是否等于 r。
参数:
返回值:
public operator func >(r: Duration): Bool
功能:判断当前 Duration 实例是否大于 r。
参数:
返回值:
public operator func >=(r: Duration): Bool
功能:判断当前 Duration 实例是否大于等于 r。
参数:
返回值:
public struct MonoTime <: Hashable & Comparable<MonoTime>
功能:MonoTime 表示单调时间,是一个用来衡量经过时间的时间类型,类似于一直运行的秒表,提供了获取当前时间,计算和比较等功能。
MonoTime 可表示的范围为 Duration.Zero 至 Duration.Max,数值表示为 [0, 263)(单位为秒),精度为纳秒。通过 now 方法创建的 MonoTime 总是晚于先使用该方式创建的 MonoTime,常用于性能测试和时间优先的任务队列。
以下为 MonoTime 中 now 函数获取当前时间使用的系统调用函数:
| 系统 | 系统调用函数 | 时钟类型 |
|---|---|---|
| Linux | clock_gettime | CLOCK_MONOTONIC |
| Windows | clock_gettime | CLOCK_MONOTONIC |
| macOS | clock_gettime | CLOCK_MONOTONIC |
public func compare(rhs: MonoTime): Ordering
功能:判断一个 MonoTime 实例与参数 rhs 的大小关系。如果大于,返回 Ordering.GT;如果等于,返回 Ordering.EQ;如果小于,返回 Ordering.LT。
参数:
返回值:
public operator func !=(r: MonoTime): Bool
功能:判断当前 MonoTime 实例是否不等于 r。
参数:
返回值:
public operator func +(r: Duration): MonoTime
功能:实现 MonoTime 类型和 Duration 类型加法,即 MonoTime + Duration 运算。
参数:
返回值:
异常:
public operator func -(r: Duration): MonoTime
功能:实现 MonoTime 类型和 Duration 类型减法,即 MonoTime - Duration 运算。
参数:
返回值:
异常:
public operator func -(r: MonoTime): Duration
功能:实现 MonoTime 类型之间的减法,即 MonoTime - MonoTime 运算。
参数:
返回值:
public operator func <(r: MonoTime): Bool
功能:判断当前 MonoTime 实例是否早于 r。
参数:
返回值:
public operator func <=(r: MonoTime): Bool
功能:判断当前 MonoTime 实例是否早于或等于 r。
参数:
返回值:
public operator func ==(r: MonoTime): Bool
功能:判断当前 MonoTime 实例是否等于 r。
参数:
返回值: