容易转换一个ISO 8601格式的日期字符串(时间戳)到一个串行日期号码。ISO 8601格式的时间戳/s在日期字符串中被自动检测,或者通过提供可选的输入令牌,时间戳/s格式可以被限制为只检测一种特定的样式。
此函数支持的ISO 8601时间戳样式选项有:金宝app
*按顺序、日历或星期编号的日期。
*基本或扩展格式。
*选择日期-时间分隔符。
*全精度或更低的精度(更少尾随日期/时间单位)。
*末尾单位的小数部分(小数位)。
不解析或不支持时区。金宝app
函数返回:
1)从输入字符串中的时间戳转换而来的序列号日期。
2)被检测到的时间戳分割的输入字符串部分。
3)给出检测到的时间戳样式的令牌Cell Array。
# # # # # #例子
*使用日期向量[1999,1,3,15,6,48.0568]给出的日期+时间。
>> datenum8601('1999-01-03 15:06:48.0568') % calendar, extended
ans = 730123.62972287962
>> datenum8601('1999003T150648.0568') %序数,基本
ans = 730123.62972287962
>> datenum8601('1998W537_150648.0568') %星期编号,基本
ans = 730123.62972287962
>> [dtn,spl,tkc] = datenum8601('A19990103B1999-003C1998-W53-7D')
dtn = (730123; 730123; 730123)
spl = {' A ', ' B ', ' C ', ' D '}
tkc ={“ymd”;“* yn”;“* YWD”}
> [dtn,spl] = datenum8601('1999-003T15')
dtn = 730123.6250
spl = {'',''}
tkc = {' * ynTH '}
>> [dtn,spl] = datenum8601('1999-01-03T15','*ymd') %指定匹配令牌。
dtn = 730123.0000
spl ={”、“T15”}
>> datevec(datenum8601('19990103 200012')) %默认允许'T @_'分隔符。
ans =
1999 1 3 20 0
>> datevec(datenum8601('19990103 200012','_')) % date-time separator char. >> datevec(datenum8601('19990103 200012','_')) % date-time分隔符
ans =
1999 1 3 0 0 0
2000 12 1 000
### ISO 8601日期符号###
时间戳在这里以扩展格式显示,使用默认的日期-时间分隔符“T”。
1)日历:
<一> - <月> < dayofmonth > T <小时>:<分钟>:<二>
字符串:1999 - 01 - 03 t15:06:48”
令牌:“* ymdHMS”
2)顺序:
<一> - < dayofyear > T <小时>:<分钟>:<二>
弦:“1999 - 003 t15:06:48”
令牌:“* ynHMS”
3) Week-numbering:
<一> - w < weeknumber > - < dayofweek > T <小时>:<分钟>:<二>
弦:“1998 - w53 7 - t15:06:48”
令牌:“* YWDHMS”
引用作为
斯蒂芬(2021)。ISO 8601日期字符串到串行日期编号(//www.tatmou.com/matlabcentral/fileexchange/39389-iso-8601-date-string-to-serial-date-number), MATLAB中央文件交换。检索.