倍频程数据库包确定以倍频程作为8字节时间值的正负差值返回PostgreSQL时间戳到2000-01-01 00:00 (int64标量,表示微秒)
例如,timestamp 2015-12-04 11:22:08返回502543328000000,单位为Octave。
如果我打算用Octave绘制时间序列,如何将其转换为更具可读性和可用性的形式?
发布于 2015-12-17 22:40:45
使用datestr。请注意,从datenum docs中可以看到,datestr需要以天为单位的序列日期编号,以及自0000年1月1日以来的日期
将日期/时间输入作为一个连续的天数返回,其中Jan 1,0000定义为第一天。
因此,首先,我们必须将您的PostgreSQL序列号转换为(a)天的单位而不是微秒,以及(b)从0000年而不是2000年开始。
timestamp = 502543328000000; % in microsecond since 2000
timestamp = timestamp / (1000000*60*60*24); % Days since 2000
timestamp = timestamp + datenum([2000,1,1]); % Days since 0000
datestr(timestamp, "yyyy-MM-dd HH:mm:ss") % Formatted string发布于 2021-05-13 02:13:22
在前面的答案中,datestr格式存在一个问题,即它返回月份而不是分钟和分钟。正确的格式可能是
timestamp = input_time; % in microsecond since 2000
timestamp = timestamp ./ (1000000*60*60*24); % Days since 2000
timestamp = timestamp + datenum([2000,1,1]); % Days since 0000
datestr(timestamp(i), "yyyy-mm-dd HH:MM:SS.FFF") % Formatted string其中,如果需要,FFF代表毫秒。
https://stackoverflow.com/questions/34336750
复制相似问题