如何在日期时间matlab中用毫秒转换日期字符串
How to convert datestring with milliseconds in datetime matlab
您好,我的日期字符串有一个小问题。我的数据在 matlab table 中,大约有 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');
但是这不起作用。出现相同的错误消息“无法使用格式解析 date/time 字符串
'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');
哪个returns:
t =
23-Jun-2014 15:06:41
编辑:
忘了问题的第二部分。要使用 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');
哪个returns:
t =
7.3577e+05
和
test =
2014-06-23 17:06:41.584
关于 datenum
的最后一点是不支持时区。由于 datenum
表示从固定日期开始的天数,我们可以简单地 add/remove 小时:
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')
哪个returns:
test =
2014-06-23 15:06:41.584
此处我指定了手动轮班的时间,但您也可以解析您的时间并自动确定。
您好,我的日期字符串有一个小问题。我的数据在 matlab table 中,大约有 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');
但是这不起作用。出现相同的错误消息“无法使用格式解析 date/time 字符串 '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');
哪个returns:
t =
23-Jun-2014 15:06:41
编辑:
忘了问题的第二部分。要使用 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');
哪个returns:
t =
7.3577e+05
和
test =
2014-06-23 17:06:41.584
关于 datenum
的最后一点是不支持时区。由于 datenum
表示从固定日期开始的天数,我们可以简单地 add/remove 小时:
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')
哪个returns:
test =
2014-06-23 15:06:41.584
此处我指定了手动轮班的时间,但您也可以解析您的时间并自动确定。