【问题标题】:How to convert datestring with milliseconds in datetime matlab如何在日期时间matlab中以毫秒转换日期字符串
【发布时间】:2015-12-20 20:02:13
【问题描述】:

您好,我对日期字符串有一个小问题。我的数据在一个大约 200 万行的 matlab 表中。时间的格式为 DateStrings='2014-06-23T17:06:41.584+0200'。我想把它放在 datenum 中。所以我想我可以使用以下代码将其转换为 datetime,然后将其转换为 datenum。

    t = datetime(DateStrings,'InputFormat','uuuu-MM-dd''T''HH:mm:SSSSSXXX','TimeZone','UTC');

但是这不起作用。出现相同的错误消息“无法使用格式解析日期/时间字符串 'uuuu-MM-dd'T'HH:mm:SSSSSXXX'。我尝试了一些字符串来删除毫秒,然后编码工作。我真的不需要毫秒,所以我想拆分字符串并删除毫秒。然而,数据量出现了问题,我遇到了内存问题。有谁知道如何以聪明的方式做到这一点。亲切的问候马蒂亚斯

【问题讨论】:

  • 你能把表格转换成数组吗?然后你可以删除最后的 xxx 字符,将其转换回来,然后运行 ​​datetime

标签: matlab date datetime milliseconds


【解决方案1】:

datetime 的某些格式不正确。

稍作调整:

DateStrings='2014-06-23T17:06:41.584+0200';  
t = datetime(DateStrings,'InputFormat','uuuu-MM-dd''T''HH:mm:ss.SSSXXXX','TimeZone','UTC');

返回:

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');

返回:

t =

   7.3577e+05

test =

2014-06-23 17:06:41.584

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')

返回:

test =

2014-06-23 15:06:41.584

我在这里手动指定了轮班时间,但您也可以解析您的时间并自动确定。

【讨论】:

  • 嗯,这是完美的,正是我需要的很好的解释。非常感谢马蒂亚斯
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-11
  • 1970-01-01
  • 2021-12-12
  • 2012-09-10
  • 2012-07-29
相关资源
最近更新 更多