如何在整数秒内获得Matlab时间戳

时间:2015-06-23 17:14:17

标签: matlab time

我需要获得一个整数秒的时间戳,不会翻转。 可以经过CPU秒,或经过时钟或纪元秒。

'clock'以年...秒为单位给出日期/时间向量。 但我无法弄清楚如何将其转换为整数秒。

cputime返回经过的整数秒,但“此数字可以溢出内部表示并回绕。”。

1 个答案:

答案 0 :(得分:3)

round(3600 * 24 * now)怎么样?

根据manualnow返回自0年以来的天数,作为浮点数。乘以86400应该会给出秒数。

通常最好使用定点格式来跟踪时间,但由于你只对整数秒感兴趣,所以它不应该是一个太大的问题。由浮点分辨率引起的now时间分辨率可以这样找到:

>>  eps(now*86400)
ans =
   7.6294e-06

或接近8微秒。这对你的用例应该足够好了。由于这些是64位浮点数,因此您不必担心在您的生命周期中包裹。

一个实际问题是,自0年以来的秒数太大,无法在标准设置的Matlab提示下打印为整数。如果这让您感到困扰,可以fprintf('%i\n', round(3600 * 24 * now)),或者只是减去一些任意数字,例如获得自2000年以来你可以做的秒数

epoch = datenum(2000, 1, 1);
round(86400 * (now - epoch))

目前正在打印488406681