【问题标题】:Trouble converting back from int to DateTime从 int 转换回 DateTime 时遇到问题
【发布时间】:2012-04-02 17:48:32
【问题描述】:

我正在从其他人编写的 sqlite3 数据库返回数据。我正在尝试检索日期和时间。要将其存储到数据库中,我将日期和时间转换为一个整数。使用这条线

  int currentTime=(int) ((newTime).toMillis(true) / 1000);

我能够以 int 形式检索数据,但无法弄清楚如何将数字转换回 日期和时间。目前,数据库返回 int 13333380180,我正在尝试将其转换为今天的日期和时间。

【问题讨论】:

    标签: android datetime sqlite


    【解决方案1】:
    long yourmilliseconds = 13333380180;
    SimpleDateFormat sdf = new SimpleDateFormat("MMM dd,yyyy HH:mm");
    
    Date resultdate = new Date(yourmilliseconds);
    System.out.println(sdf.format(resultdate));
    

    使用上面的代码进行转换

    【讨论】:

    • 你必须将秒数乘以 1000,因为 currentTime 是 toMillis 除以 1000。
    • new Date(13333380180) 结果是 1970 年 6 月 4 日星期四 08:43:00 CET,新 Date(13333380180000) 结果是 2392 年 7 月 8 日星期三 14:43:00 CEST,看起来都很奇怪。
    • 它一直转换到 1970 年 1 月 16 日 02:23。
    • 根据您的期望必须是什么日期
    • 谢谢,将 int 转换为 long,乘以 1000,现在可以使用了
    【解决方案2】:

    您收到的数字是自 1970 年 1 月 1 日以来经过的毫秒数。这是在多个平台上表示日期和时间的标准、一致的方式。

    虽然在 SQLite 中该值是一个整数,但 SQLite 整数最多可以是 64 位。因此,返回给您的值在 Java 中应被视为long。您可以用一种简单的方式将其转换为 Java Date 对象:new Date(currentTime)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      • 2014-04-19
      • 2016-08-13
      相关资源
      最近更新 更多