Mat*_*nio 1 matlab datetime date milliseconds
嗨,我对日期字符串有一个小问题.我的数据在matlab表中,大约有200万行.时间格式为DateStrings ='2014-06-23T17:06:41.584 + 0200'.我想在datenum中拥有它.所以我想我可以使用以下代码将其转换为datetime,然后将其转换为datenum.
t = datetime(DateStrings,'InputFormat','uuuu-MM-dd''T''HH:mm:SSSSSXXX','TimeZone','UTC');
Run Code Online (Sandbox Code Playgroud)
但这不起作用.使用相同的错误消息"无法使用'uuuu-MM-dd'T'HH:mm:SSSSSXXX'格式解析日期/时间字符串.我尝试了几个字符串来删除毫秒然后编码工作.我不真的需要毫秒,所以我想分割字符串并删除毫秒.然而,数据量的问题,我遇到了内存问题.有没有人知道如何以聪明的方式做到这一点.亲切的问候马蒂亚斯
您的部分格式datetime不正确.
略微调整:
DateStrings='2014-06-23T17:06:41.584+0200';
t = datetime(DateStrings,'InputFormat','uuuu-MM-dd''T''HH:mm:ss.SSSXXXX','TimeZone','UTC');
Run Code Online (Sandbox Code Playgroud)
哪个回报:
t =
23-Jun-2014 15:06:41
Run Code Online (Sandbox Code Playgroud)
编辑:
忘了问题的第二部分.要使用datenum你还需要稍微改变语法.我还要注意,您可以对字符串执行此转换,而无需转换为datetime数组.
例如:
DateStrings='2014-06-23T17:06:41.584+0200';
t = datenum(DateStrings, 'yyyy-mm-ddTHH:MM:SS.FFF');
test = datestr(t, 'yyyy-mm-dd HH:MM:SS.FFF');
Run Code Online (Sandbox Code Playgroud)
哪个回报:
t =
7.3577e+05
Run Code Online (Sandbox Code Playgroud)
和
test =
2014-06-23 17:06:41.584
Run Code Online (Sandbox Code Playgroud)
最后一点datenum是没有时区支持.由于datenum代表固定日期的天数,我们可以简单地添加/删除小时数:
DateStrings='2014-06-23T17:06:41.584+0200';
t = datenum(DateStrings, 'yyyy-mm-ddTHH:MM:SS.FFF');
hourstoshift = -2;
t = datenum(t + hourstoshift/24);
test = datestr(t, 'yyyy-mm-dd HH:MM:SS.FFF')
Run Code Online (Sandbox Code Playgroud)
哪个回报:
test =
2014-06-23 15:06:41.584
Run Code Online (Sandbox Code Playgroud)
这里我已经指定了手动移动的小时数,但您也可以解析时间并自动确定.