【问题标题】:Year getting converted 1970 when using date in currentTimeMillis()在 currentTimeMillis() 中使用日期时,年份转换为 1970
【发布时间】:2017-12-25 05:17:12
【问题描述】:

我正在开发一个应用程序,我在 sqlite 数据库中的 currentTimeMillis() 中保存日期,当我阅读它时,我尝试将其转换为可读格式。但是日期总是被转换为 1970 年 1 月 1 日。 以下是我将其保存到 sqlite 数据库的代码:

long date = System.currentTimeMillis();

然后我尝试通过以下方式将其转换为可读格式:

SimpleDateFormat sdf = new SimpleDateFormat("MMM dd,yyyy HH:mm");

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(attendance.getPicDate());
Date resultdate = new Date(attendance.getPicDate());
System.out.println(sdf.format(resultdate));

我得到以下输出:

1970 年 1 月 17 日 19:36

Edit1: admission.getPicDate() 值 = 1432678159

Edit2:当我尝试保存值时它是 1500378235812 但是当我阅读它时,它变成了上面,我在表中的列是整数。

【问题讨论】:

  • 您的日历对象与此处无关,因此您可以将其删除。 attendance.getPicDate() 的值是多少?
  • 你检查过 admission.getPicDate() 的值吗?
  • 我已将其添加为评论
  • 以秒为单位,而不是毫秒。你打电话给setTimeInMillis
  • 只需将此值乘以 1000

标签: android sqlite date android-sqlite


【解决方案1】:

1432678159 确实转换为 1970 年 1 月 17 日 19:36。

尝试检查出勤率.setPicDate()。

【讨论】:

  • 1500378235812 转换为 2017 年 7 月 18 日星期二 11:43:55。在您的代码中的某个地方,您正在丢失正确的值。
【解决方案2】:

我发现我的错误是使用 cursor.getInt(2) 从数据库中获取日期,但现在我已将其更正为 cursor.getLong(2) 并且它现在工作得很好。

【讨论】:

    【解决方案3】:

    我建议,您应该将日期和时间以字符串格式保存在数据库中。

    Calendar calendar=Calendar.getInstance();
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");
    String currentTime=sdf.format(calendar.getTime());
    

    将“currentTime”保存在您的数据库中。

    【讨论】:

      猜你喜欢
      • 2017-04-28
      • 2021-12-01
      • 1970-01-01
      • 2019-08-12
      • 1970-01-01
      • 2021-05-20
      • 1970-01-01
      • 2016-12-17
      • 2012-01-04
      相关资源
      最近更新 更多