【问题标题】:Help with dates in Android在 Android 中提供日期帮助
【发布时间】:2011-01-04 12:42:14
【问题描述】:

在从 DatePicker 小部件中获取数据并将其存储在应用程序内的 sqlite 数据库中时寻求一些帮助。我有以下代码:

java.util.Date utilDate = null;
            String y = Integer.toString(date.getDayOfMonth()) + "/" + (date.getMonth()+1) + "/" + Integer.toString(date.getYear());
            SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyy");
            utilDate = formatter.parse(y);
            java.sql.Date z = new java.sql.Date(utilDate.getDate());
            x = z.toString();
            Log.v("The date: ", x);
}

其中 date 是 DatePicker 小部件。如果我使用 logCat 输出 utilDate 变量(即日期的 Java 版本),它似乎可以正常工作并给我一个格式,如:Tue Jan 04 00:00:00 GMT 2011 我期待但使用上面的代码来获取sql 版本的日期,它总是给我日期 1970-01-01。我很确定解决方案非常简单,但我就是看不到。

【问题讨论】:

  • 我不确定,但我认为您的代码应该是 java.sql.Date z = new java.sql.Date(utilDate);

标签: java android date


【解决方案1】:

这部分:utilDate.getDate()是错误的。

引用Javadoc:

返回此 Date 对象表示的月份中的哪一天。返回的值介于 1 到 31 之间,表示包含此 Date 对象所表示的时间点或以该时间点开始的月份的日期,如本地时区所解释的那样。

因此,您会得到一个介于 1 和 31 之间的数字,并且您期望的 long 表示自 1970 年 1 月 1 日 00:00:00.000 GMT 以来经过的毫秒数。

使用

java.sql.Date z = new java.sql.Date(utilDate.getTime());

一切都应该没问题。

【讨论】:

  • 非常感谢,我知道这很简单。
猜你喜欢
  • 2011-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多