这个问题的正确答案是
参数里面的'Format',应该是'InputFormat',前者是用来输出时间的格式,后者才是读取的格式
除此之外还有两个烂轮问题,
一是世虚小时数应该用12小时制1位或2位
不是HH而是h
二是
如果matlab如果是中文版或者系统是中文系统,那么可能解析AM会搜历燃报错
需要指定地区为en_US
综上所述改成这样就能跑通了
tt = datetime(t,'InputFormat','dd/MM/yyyy h:mm:ss.SSS a','Locale','en_US');
MATLAB中将磨饥日期瞎笑返时间转换为字符串的函数是datestr,但并不支持你的这种格式。
比较接近的是格式30(ISO 8601),不过多了一个字符“T”,可以给替换掉:
1
2
3
4
>> year=2012;month=1;day=1;hour=3;min=6;sec=1;
>> strrep(datestr(datenum(year,month,day,hour,min,sec),30),'T','')
ans =
20120101030601
当然,也可以直升敬接用sprintf函数来写:
1
2
3
>> sprintf('%i%02i%02i%02i%02i%02i',year,month,day,hour,min,sec)
ans =
20120101030601
tt = datestr(datenum(t,'山察仿乎dd/MM/yyyy HH:mm:ss.FFF AM'逗大茄),0)
tt =
17-Dec-2017 08:01:30
17-Dec-2017 08:01:30