如何将Unix纪元微秒整数向量转换为Matlab Timetable适用的Duration类型
将Unix纪元微秒整数向量转换为Matlab Timetable可用的Duration类型
现有一组表示Unix纪元以来微秒数的整数向量,示例代码如下:
datetimes = [1679909400000000;1679909500000000;1679909600000000]
请问如何将其转换为Matlab中可用于Timetable的Duration类型?
转换方案
这些整数是Unix纪元(1970-01-01 00:00:00 UTC)以来的微秒数,要转成Matlab的duration类型(可直接用于Timetable),有两种简洁方法:
方法一:通过秒数转换
先把微秒数除以1e6转成秒数,再用seconds()函数生成Duration对象:
% 微秒转秒,再生成Duration durations = seconds(datetimes / 1e6);
验证类型:
class(durations) % 输出:'duration'
方法二:直接指定单位生成Duration
用duration()函数,明确指定时、分、秒参数(秒部分传入微秒转换后的值),还可以自定义显示格式:
% 生成带微秒精度的Duration,指定显示格式 durations = duration(0, 0, datetimes / 1e6, 'Format', 'hh:mm:ss.SSSSSS');
用于创建Timetable的示例
假设你有对应的数据列,直接用转换后的Duration作为行时间:
data = [1; 2; 3]; tt = timetable(durations, data);
内容的提问来源于stack exchange,提问作者BAR
相关产品推荐
相关产品推荐

