【问题标题】:What is the difference between C++ and Java timestamps?C++ 和 Java 时间戳有什么区别?
【发布时间】:2014-10-13 12:44:55
【问题描述】:

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

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

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

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

【问题讨论】:

  • 这取决于你如何在 Java 中使用这个 long。通常时间戳以毫秒为单位。如果您需要更多帮助,请添加您的 Java 代码...
  • 你能告诉我们你是如何用 Java 读取这个时间戳的吗?
  • 读取日期时间戳通常使用new Date(long)。请检查我的更新答案。
  • C++时间戳是怎么得到的?
  • 试试new Date(1407315600 * 1000)。 Java 日期需要毫秒,您拥有的 C++ 时间戳看起来是以秒为单位的。

标签: java c++ timestamp


【解决方案1】:

试试

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-26
    • 2014-10-31
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    • 2015-09-30
    • 2014-05-13
    • 2013-11-24
    相关资源
    最近更新 更多