matlab - 在 Matlab 中用小数秒将纪元转换为日期
问题描述
我有一个包含小数(纳秒)的纪元时间数组。我已经在 Matlab 中查看了将 Epoch 转换为日期,但似乎仍然无法转换为正确的日期。我一定错过了一些简单的东西。
示例数据:1548348497.191261
我正在使用上面链接中的代码。
time_unix_nanos = 1548348497.191261;
millis = round(time_unix_nanos);
nanos = time_unix_nanos - 1e6 * millis;
time_matlab = round(864e5 * (millis - datenum('1970', 'yyyy')));
s = [datestr(time_matlab, 'yyyy-mm-dd hh:mm:ss.FFF;), num2str(nanos)];
fprintf('s: = %f\n',s);
两个期望的输出完整的日期格式:yyyy-mm-dd HH:mm:ss.SSS 只是时间格式:HH:mm:ss.SSS
提前致谢!
解决方案
似乎您将 unixtime 转换为 matlab 时间与 matlab 时间转换为 unixtime 错误。
time_unix_nanos = 1548348497.191261;
millis = round(time_unix_nanos / 1e6); % You had also a /1e6 missing here
nanos = time_unix_nanos - 1e6 * millis;
% The following line converts unix time to matlab time. The line you used was doing the opposite
time_matlab = datenum('1970', 'yyyy') + millis / 864e5;
% First desired date format
s1 = [datestr(time_matlab, 'yyyymmdd HH:MM:SS.FFF;'), num2str(nanos)]
% Second desired date format
s2 = [datestr(time_matlab, 'HH:MM:SS.FFF;'), num2str(nanos)]
给
>> s1
'19700101 00:00:01.548;348497.1913'
>> s2
'00:00:01.548;348497.1913'
推荐阅读
- amazon-web-services - AWS 中的工作原理或条件策略
- java - 正在生成使用 Spring Boot 空日志文件
- python - 如何使用 Flutter Web 上传文件(Python 服务器)
- javascript - 为什么车把模板中的修剪字符串不呈现?
- c# - winForm 应用程序的标准尺寸是多少?
- sql - 如何在同一个表上多次加入每行的最大值
- python - QDial 每转角度
- text - Sublime Text 3:纯文本模式下的粗体文本
- java - Firebase Analytics“view_cart”事件设置
- autodesk-forge - FailedLimitProcessingTime;可以访问 Forge Journal 文件吗?