C ++和Java时间戳有什么区别?

时间:2014-10-13 12:44:56

标签: java c++ timestamp

在使用JSON作为交换的项目中,我们遇到了这样的问题:即使两者都被描述为long原始数据类型,C ++和Java中的时间戳(以毫秒为单位)也完全不同。

每种语言使用什么样的标准,为什么会有区别?

例如,1407315600是一个C ++时间戳,它引用06.08.2014 09:00:00 UTC而在Java中它是不可读的!

使用new Date(1407315600)读取Java中的时间戳。

1 个答案:

答案 0 :(得分:2)

尝试

new Date(1407315600 * 1000)

Java日期需要毫秒,你所拥有的C ++时间戳看起来就像几秒钟。

通常,C ++ time_t函数给出了自纪元以来的秒数。

要获得C ++中的时间(以Java为单位),请参考this.

<强> C ++ 11

如果平台上有C ++ 11,则chrono::high_resolution_clock可用于获得更高的分辨率(注意;时钟可能是其他时钟之一的别名或实现定义的时钟)。

#include <iostream>
#include <chrono>

int main()
{
    using namespace std;
    using namespace std::chrono;

    milliseconds ms;
    ms = duration_cast<milliseconds>(high_resolution_clock::now().time_since_epoch());
    cout << ms.count() << endl;
}