C++和Java时间戳之间的区别是什么

What is the difference between C++ and Java timestamps?

本文关键字:区别 是什么 之间 时间戳 Java C++      更新时间:2023-10-16

在一个使用JSON作为交换的项目中,我们遇到了C++和Java中以毫秒为单位的时间戳完全不同的问题,尽管两者都被描述为long基元数据类型。

每种语言使用什么样的标准?为什么会有差异?

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

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

尝试

new Date(1407315600 * 1000)

Java日期需要毫秒,而您的C++时间戳看起来是以秒为单位的。

通常,C++time_t函数给出自epoch以来的时间(以秒为单位)。

要在C++中获得以毫秒为单位的时间(与Java相比),请参阅此。

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;
}