- 450
- 0
- 约9.56千字
- 约 10页
- 2017-07-26 发布于河北
- 举报
Julia 日期和时间.pdf
Julia ⽇期和时间
⽇期和时间
Dates 模块提供了两种关于时间的数据类型: Date 和 DateTime, 精度分别为天和毫
秒, 都是抽象数据类型 TimeType 的⼦类型. 使 两种数据类型的原因很简单: 某些操
作本⾝很简单, ⽆论是从代码上看还是逻辑上, 使 ⾼精度的数据类型是完全没有必要
的. 例如, Date 只精确到天 (也就是说, 没有⼩时, 分钟或者秒), 所以使 时就不需要考
虑时区, 夏令时和闰秒.
Date 和 DateTime 都不过是 Int64 的简单封装, 仅有的⼀个成员变量 instant 实
际上的类型是 UTInstant{P}, 代表的是基于世界时的机器时间 [1]. Datetime 类型
是 不考虑时区 的 (根据 Python 的讲法), 或者说是 Java 8 ⾥⾯的 本地时间. 额外的时间
⽇期操作可以通过 Timezones.jl 扩展包来获取, 其中的数据来⾃ Olsen Time Zone
Database . Date 和 DateTime 遵循 SO 860 1 标准. 值得注意的⼀点是, SO 860 1 关于
公元前⽇期的处理⽐较特殊. 简单来说, 公元前的最后⼀天是公元前 1-12-31, 接下来第
⼆天是公元 1-1-1, 所以是没有公元 0 年存在的. ⽽ SO 标准认定, 公元前 1 年是 0 年,
所以 0000-12-21 是 0001-01-01 的前⼀天, -0001 是公元前 2 年, -0003 是公元
前 3 年, 等等.
[1] ⼀般来说有两种常 的时间表⽰法, ⼀种是基于地球的⾃转状态 (地球转⼀整圈 = 1
天), 另⼀种基于 S 秒 ( 固定的常量) . 这两种表⽰⽅法是不⼀样的. 试想⼀下, 因为地球
⾃转, 基于世界时的的秒可能是不等长的. 但总得来说, 基于世界时的 Date 和
DateTime 是⼀种简化的⽅案, 例如闰秒的情况不需要考虑. 这种表⽰时间的⽅案的正
式名称为世界时 . 这意味着, 每⼀分钟有 60 秒, 每⼀天有 60 ⼩时, 这样使得关于时间的
计算更⾃然, 简单.
构造函数
Date 和 DateType 可以通过整数或者 Period 构造, 通过直接传⼊, 或者作为与特定
时间的差值:
julia DateTime 2013)
2013-01-01T00:00:00
julia DateTime 2013,7)
2013-07-01T00:00:00
julia DateTime 2013,7,1)
2013-07-01T00:00:00
julia DateTime 2013,7,1,12)
2013-07-01T12:00:00
julia DateTime 2013,7,1,12,30)
2013-07-01T12:30:00
julia DateTime 2013,7,1,12,30,59)
2013-07-01T12:30:59
julia DateTime 2013,7,1,12,30,59,1)
2013-07-01T12:30:59.001
julia Date 2013)
2013-01-01
julia Date 2013,7)
2013-07-01
julia Date 2013,7,1)
2013-07-01
julia Date Dates.Year 2013),Dates.Month 7),Dates.Day 1))
2013-07-01
julia Date Dates.Month 7),Dates.Year 2013))
2013-07-01
Date 和 DateTime 解析是通过格式化的字符串实现的. 格式化的字符串是指 分隔 的
或者 固定宽度 的 字符段 来表⽰⼀段时间, 然后传递给 Date 或者 DateTime 的构
造函数.
使 分隔的字符段⽅法, 需要显⽰指明分隔符, 所以 y-m-d 告诉解析器第⼀个和第
⼆个字符段中间有⼀个 -, 例如 2014-07-16, y, m 和 d 字符告诉解析器每个字符段
的含义.
固定宽度字符段是使 固定宽度的字符串来表⽰时间. 所以 yyyymmdd 相对应的时
间字符串为
同时字符表⽰的⽉份也可以被解析, 通过使 u 和 U, 分别是⽉份的简
原创力文档

文档评论(0)