# convertTo
将 DateTime 值转换为数值表示
函数库: TyBaseEx
# 语法
X = convertTo(D,dateType)
X = convertTo(D,"epochtime";Key=value)
# 说明
X = convertTo(D,dateType) 将 D 中的 DateTime 值转换为 dateType 指定的数值表示,并返回数值数组。例如,如果 dateType 是 "posixtime",则 convertTo 会将 D 的每个元素转换为自 UTC(协调世界时)1970 年 1 月 1 日 00:00:00 纪元以来经过的秒数。
所有数值表示都说明相对于某时间点(称为纪元)的日期和时间。计算机通常用自指定纪元起计的秒数或时钟计时单元数来测量时间。示例
X = convertTo(D,"epochtime";Key=value) 使用名称-值对组参数指定纪元和每秒的时钟计时单元数。例如,如果您将纪元指定为 k = value,则 X 中的每个值表示 2001 年 1 月 1 日午夜之前或之后的秒数。示例
# 示例
将日期和时间转换为 Excel 和 .NET 时间
using TimeZones
using TyBaseEx
D = DateTime.(2019, 10:12, 1, 12, 0, 0)
D=
3-element Vector{DateTime}:
2019-10-01T12:00:00
2019-11-01T12:00:00
2019-12-01T12:00:00
将 D 转换为表示 Excel 日期数值的双精度值数组。
X = convertTo(D, "excel")
X=
3-element Vector{Float64}:
43739.5
43770.5
43800.5
将 D 转换为一个将日期和时间表示为 .NET 时间的数组。
X = convertTo(D, ".net")
X=
3-element Vector{Float64}:
6.3705528e17
6.37082064e17
6.37107984e17
指定纪元和时钟计时单元
using TimeZones
using TyBaseEx
D = ZonedDateTime.(DateTime.(2019, 10:12, 1, 12, 0, 0), tz"Asia/Tokyo")
D=
3-element Vector{ZonedDateTime}:
2019-10-01T12:00:00+09:00
2019-11-01T12:00:00+09:00
2019-12-01T12:00:00+09:00
转换 D。要将时间表示为自 2001 年 1 月 1 日以来经过的毫秒数,请指定 epoch 和 tickspersecond 名称-值对组参数。您可以将纪元指定为 DateTime 值,或指定为文本格式的日期和时间。当您指定 "epochtime" 时,输出是有符号 64 位整数组成的数组。
X = convertTo(D, "epochtime"; epoch="2001-01-01", tickspersecond=1000)
3-element Vector{Float64}:
5.91624e11
5.943024e11
5.968944e11
如果未指定 D 的时区,则当您指定 "epochtime" 时,convertTo 函数会将 D 的元素视为 UTC 时间。
# 输入参数
D - 输入日期和时间
DateTime 数组
dateType - 输出数值表示类型
"excel" | "excel1904" | "juliandate" | "modifiedjuliandate" | "posixtime" | ...
dateType 的值决定输出数组的数据类型。一些数值表示要求有符号 64 位整数。根据这些要求,输出可以具有 Float64 或 Int64 数据类型。
| dataType的值 | 输出数值表示 | 输出数值类型 |
| "excel" | 自 1900 年 1 月 0 日起计的天数,表示 Excel® 日期值。
注意:Excel 日期值舍入为最近的微秒。 请注意:Excel 错误地假设 1900 年是闰年。因此,计算 Excel 日期值时,1900 年 2 月 28 日与 1900 年 3 月 1 日之间因为多了一天而中断。 | Float64 |
| "excel1904" | 自 1904 年 1 月 0 日起计的天数,表示 Excel 日期值。
注意:Excel 日期值舍入为最近的微秒。 请注意:Excel 错误地假设 1900 年是闰年。因此,计算 Excel 日期值时,1900 年 2 月 28 日与 1900 年 3 月 1 日之间因为多了一天而中断。 | Float64 |
| "juliandate" | 自 UTC 时间公元前 4714 年 11 月 24 日中午(前公历日历)起计的天数,表示儒略日期。
注意:如果未指定 D 的时区,则 convertTo 会将 D 中的值视为 UTC 时间,而不是本地时间。要表示本地时间,请在调用 convertTo 函数之前,使用 D 的 TimeZone 属性指定时区。 示例:使用东京的时区转换 D。 | Float64 |
| "modifiedjuliandate" | 自 UTC 时间 1858 年 11 月 17 日午夜起计的天数,表示修改后的儒略日期。
注意:如果未指定 D 的时区,则 convertTo 会将 D 中的值视为 UTC 时间,而不是本地时间。要表示本地时间,请在调用 convertTo 函数之前,使用 D 的 TimeZone 属性指定时区。 示例:使用东京的时区转换 D。 | Float64 |
| "posixtime" | 自 UTC 时间 1970 年 1 月 1 日 00:00:00(该时间点称为 Unix 纪元)起计的秒数。
Unix 时间,也称为 UNIX 纪元时间或 POSIX 时间,是针对 Unix 纪元测量时间的系统。(Unix 时间会忽略闰秒,因此不能真正表示 UTC 时间。)
注意:如果未指定 D 的时区,则 convertTo 会将 D 中的值视为 UTC 时间,而不是本地时间。要表示本地时间,请在调用 convertTo 函数之前,使用 D 的 TimeZone 属性指定时区。 示例:转换 D,将其时区指定为东京所在的时区。 | Float64 |
| "yyyymmdd" | 以 YYYYMMDD 数值形式表示的日期。例如,20140402 表示 2014 年 4 月 2 日。 | Int64 |
| "datenum" | 自 0000 年 1 月 0 日(前 ISO 日历)起计的天数。 | Float64 |
| "ntp" | 自 UTC 时间 1900 年 1 月 1 日 00:00:00 起计的“时钟计时单元”数,表示网络时间协议 (NTP) 时间戳,其中每个时钟计时单元为 2^-32 秒。convertTo 会将 D 中的值视为 UTC 时间,而不是本地时间。要表示本地时间,请在调用 convertTo 函数之前,使用 D 的 TimeZone 属性指定时区。 | Float64 |
| ".net" | 自 UTC 时间 0001 年 1 月 1 日 00:00:00 起计的“时钟计时单元”数,表示 Microsoft® .NET 时间戳,其中每个时钟计时单元为 100 纳秒。convertTo 会将 D 中的值视为 UTC 时间,而不是本地时间。要表示本地时间,请在调用 convertTo 函数之前,使用 D 的 TimeZone 属性指定时区。 | Float64 |
| "ntfs" | 自 UTC 时间 1601 年 1 月 1 日 00:00:00 起计的“时钟计时单元”数,表示 NTFS 时间戳,其中每个时钟计时单元为 100 纳秒。convertTo 会将 D 中的值视为 UTC 时间,而不是本地时间。要表示本地时间,请在调用 convertTo 函数之前,使用 D 的 TimeZone 属性指定时区。 | Float64 |
| "epochtime" | 自指定纪元起计的秒数。将此选项与 "epoch" 和 "tickspersecond" 名称-值对组参数结合使用。
注意:如果未指定 D 的时区,则 convertTo 会将 D 中的值视为 UTC 时间,而不是本地时间。要表示本地时间,请在调用 convertTo 函数之前,使用 D 的 TimeZone 属性指定时区。 示例:指定 D 的时区。然后将其转换为自 2001 年 1 月 1 日以来经过的秒数。 | Float64 |
# 名称-值参数
将可选的参数对组指定为 Key1=value1,...,KeyN=valueN,其中 Key 是参数名称,value 是对应的值。名称-值参数必须出现在其他参数之后,但参数对组的顺序无关紧要。
使用逗号分隔每个名称和值。
示例: convertTo(D,"epochtime";epoch="2001-01-01",tickspersecond=1000) 返回自 2001 年 1 月 1 日起计的毫秒数。
epoch — 用于时间测量的点
datetime(1970,1,1,0,0,0,'"TimeZone","UTC") (默认)| DateTime 标量 | 字符串 | 字符串标量
如果 "epoch" 的值是字符向量或字符串标量,则它必须以 DateTime 函数能够识别的格式表示日期时间(例如,"2001-01-01" 表示 2001 年 1 月 1 日)。
默认值为 Unix 纪元,表示 UTC 时间 1970 年 1 月 1 日 00:00:00。