【问题标题】:Converting floating point timestamp from Python to Date in java在Java中将浮点时间戳从Python转换为日期
【发布时间】:2014-06-12 13:33:37
【问题描述】:

我有一个接收 JSON 对象的 Rest Service。这个 JSON 中有一个时间戳值。当我将 JSON 对象转换为 Java 类时,我使用 long 变量(我稍后将其与 new Date(long) 一起使用以获取正确的日期对象)作为时间戳。一切正常,因为客户端(在 Java 和 JS 中)正在发送时间戳。

现在我们正在向服务中添加一个 Python 客户端,我正在尝试从 Python 发送时间戳。但是 Python 中的 time.time() 方法总是给出一个浮点数。所以我决定在我的 Rest Service 的 Java 类中使用一个双变量,我得到了正确的时间戳。但是,我如何将其转换为 Date 对象。有什么想法吗?

【问题讨论】:

    标签: java python json datetime


    【解决方案1】:

    因此查看文档(以前从未使用过 Python),它看起来像 time.time() 方法 returns seconds since the epoch,而 Java Date 对象在其构造函数中需要 milliseconds from the epoch

    因此,您需要做一些花哨的数学运算才能将 double 转换为 long。从我刚刚阅读的一点 Python 文档来看,在 Python 代码中将秒转换为毫秒并将结果作为 long 发送到其余服务似乎更容易。根据您的精确程度,您可以将 time.time() 结果乘以 1000 以达到毫秒,然后将其余部分舍入以丢弃浮点部分。

    【讨论】:

    • 在 Python 代码中通过乘法将秒转换为毫秒会更容易,但它仍然是一个浮点数。 round(time.time()*1000) 仍然给出一个浮点数。也许我会接受这个想法并在 Java 方面进行转换。
    • 最后我做了这样的事情。从 Python 发送time.time()*1000。在不同的double变量中接收,这样转换成long后设置日期long timestamp = (long)createdTimeInDouble
    猜你喜欢
    • 2019-02-17
    • 2020-08-03
    • 2012-08-01
    • 1970-01-01
    • 2016-02-10
    • 1970-01-01
    • 2019-02-03
    • 1970-01-01
    • 2014-05-16
    相关资源
    最近更新 更多