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

时间:2015-07-29 11:31:44

标签: php timestamp

目前我正在使用Microsoft开发的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    --

我在网上搜索但没有找到解决办法。 这是一个在这里找到的线程 Microsoft,但没有人回答这个问题。欣赏是否可以提供帮助。

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

2 个答案:

答案 0 :(得分:0)

您需要了解时间戳。简而言之,它们是自Unix Epoch以来经过的秒数。 (就计算机而言,时间的黎明)。

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

产出:1940年5月26日,7:26:pm

在这种情况下,'掩码' jS MY,g:i:a',可以修改为适合您希望显示时间戳的格式。不同& #39;掩模'可在此处找到:http://php.net/manual/en/function.date.php

一旦理解了这一点,就转而使用PHP的DateTime对象。 http://php.net/manual/en/book.datetime.php

答案 1 :(得分:0)

经过一整天的研究,终于我能够找到解决方案了。 提到的时间戳格式不是从中开始的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