你可以转换datetime
数组以专门的数字格式表示时间点。通常,这些格式将时间点表示为从指定的起始点开始经过的秒数或天数。例如,儒略日期是自儒略时期开始以来经过的天数和小数天数。POSIX®时间是自00:00:00 1-Jan-1970 UTC(通用协调时间)以来经过的秒数。MATLAB®提供了Juliandate.
和posixtime
函数转换datetime
数组的儒略日期和POSIX时间。
尽管datetime
数组不需要有时区,因此转换为“unzoning”datetime
儒略日期或POSIX时间的值会导致意想不到的结果。为确保转换结果,请在转换前指定时区。
您可以指定一个时区datetime
数组,但您不需要这样做。事实上,默认情况下datetime
函数创建一个“未分区”。datetime
数组中。
创建一个datetime
值为当前日期和时间。
d = datetime (“现在”)
d =datetime01 - 9 - 2021 10:16:54
d
是根据您的计算机上的本地时间构造的,并且没有与之关联的时区。在许多情况下,您可能会假设可以在无分区的情况下处理时间datetime
数组作为本地时间。然而,Juliandate.
和posixtime
函数处理时间在无分区datetime
数组作为UTC时间,而不是本地时间。为了避免歧义,建议您避免使用Juliandate.
和posixtime
在unzoneddatetime
数组。例如,避免使用POSIXTIME(DATETIME('现在'))
在您的代码中。
如果你的datetime
数组的值不代表UTC时间,请使用时区
名称值对参数如此Juliandate.
和posixtime
解释datetime
正确的价值观。
d = datetime (“现在”,“时区”,“美国/ New_York”)
d =datetime01 - 9 - 2021 10:16:54
作为一种替代方法,您可以指定时区
属性。
d.timezone ='美国/ Los_Angeles'
d =datetime01 - 9 - 2021 07:16:54
要查看完整的时区列表,请使用时区
函数。
朱利安日期是从11月24日,在巨大的格雷戈里亚日历中午24714年的中午,在巨大的朱利安日历中的日历中午24714年的日子,或者在第4713号BCE。转换datetime
向朱利安日期,使用Juliandate.
函数。
创建一个datetime
Array并指定其时区。
DZ = datetime (“2016-07-29 10:05:24”) + calmonths (1:3);DZ。时区=“美国/ New_York”
DZ =1 x3 datetime29- 8 -2016 10:05:24 29- 9- 2016 10:05:24
转换D
对应的儒略日期
格式longGJDZ = juliandate (DZ)
JDZ =1×32.4576 2.4577 2.4577
创建的非分区副本DZ
.转换D
对应的儒略日期作为D
没有时区,Juliandate.
将时间视为UTC时间。
D = DZ;D.TimeZone ='';JD = juliandate (D)
JD =1×32.4576 2.4577 2.4577
比较JDZ
和JD
.该差值等于UTC和美国/纽约
分区在小数时代。
JDZ - JD
ans =1×30.1667 0.1667 0.1667
POSIX时间是自00:00:00 1-Jan-1970 UTC(通用协调时间)以来经过的秒数(包括小数秒),忽略了闰秒。转换datetime
数组的POSIX次数,使用posixtime
函数。
创建一个datetime
Array并指定其时区。
DZ = datetime (“2016-07-29 10:05:24”) + calmonths (1:3);DZ。时区=“美国/ New_York”
DZ =1 x3 datetime29- 8 -2016 10:05:24 29- 9- 2016 10:05:24
转换D
等于等价的POSIX时间。
PTZ = posixtime (DZ)
PTZ =1×31.4725 1.4752 1.4777
创建的非分区副本DZ
.转换D
等于等价的POSIX时间。作为D
没有时区,posixtime
将时间视为UTC时间。
D = DZ;D.TimeZone ='';PT = posixtime (D)
PT =1×31.4725 1.4751 1.4777
比较PTZ
和PT
.该差值等于UTC和美国/纽约
时区以秒为单位。
PTZ - PT
ans =1×314400 14400 14400
datetime
|时区
|posixtime
|Juliandate.