将时间戳从焦耳计转换为人类可读的形式


Convert timestamp from joulemeter to human readable form

目前我正在使用微软开发的joulemeter收集数据。它以时间戳格式记录数据和时间,但格式不同。我尝试使用正常转换,但无法获得准确的时间和数据。我将使用php中的数据。下面是我得到的数据,第一列是时间戳的记录。

TimeStamp (ms)   Total Power (W)     CPU (W)     Monitor (W)     Disk (W)    Base (W)    Application (W)
63573171824975  27      0.2 4.4 0   22.4    --
63573171825988  27      0.2 4.4 0   22.4    --
63573171827002  26.9    0.1 4.4 0   22.4    --
63573171828016  27      0.1 4.4 0   22.4    --
63573171829030  27      0.1 4.4 0   22.4    --
63573171830044  27      0.1 4.4 0   22.4    --
63573171831058  26.9    0   4.4 0   22.4    --
63573171832074  26.9    0   4.4 0   22.4    --
63573171833086  26.9    0.1 4.4 0   22.4    --
63573171834100  26.9    0.1 4.4 0   22.4    --
63573171835115  26.9    0   4.4 0   22.4    --

我已经在网上搜索了,但没有找到解决方案。这是在这里找到的一条线微软,但没有人回答这个问题。如果能帮上忙,我很感激。

编辑:附加信息:我注意到焦耳计显示了2015年7月3日下午4:41:08的功率模型它会从这个日期开始计数,而不是从windows时间戳1601/1970开始计数吗?这意味着时间戳的偏移量不同。

您需要了解时间戳。简而言之,它们是自Unix纪元以来经过的秒数。(就计算机而言,这是时代的开端)。

$timeStamp = 63573171824975;
echo date('jS M Y, g:i:a',$timeStamp);

输出:26 May 1940, 7:26:pm

可以修改'掩码',在本例中为'jS M Y, g:i:a',以适应您希望显示时间戳的格式。不同的"掩码"可以在这里找到:http://php.net/manual/en/function.date.php

一旦你理解了这一点,切换到使用PHP的DateTime对象。http://php.net/manual/en/book.datetime.php

经过一整天的研究,我终于想出了解决办法。这里提到的时间戳格式不是UNIX时间戳00:00:00 1/1/1970和当前使用的PHP date()函数的开始日期。它实际上是从0001-01-01 00:00:00开始的。

0001-01-01 00:00:0000:00:00 1/1/1970之间的秒数= 62136892800

解决方案:

//timestamp in millisecond
$timestamp = 63573171824975/1000 - 62136892800;
echo date('r',$timeStamp);
//result = Tue, 7 Jul 2015 03:49:35 +0800