java - 已编辑 : How can I change date format of Date object?

标签 java android date

我使用此查询在 SQLite 数据库中创建了表:

create table table_name(
id integer primary key autoincrement,
name varchar(450) not null,
date date)

我通过此代码插入值(简化了问题):

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
Date tmpDate = dateFormat.parse("2014/01/12");
values.put(columnKey, tmpDate.toString());
db.insert("table_name", null, values);

再次从数据库中获取行“日期”的值后,我收到此错误:

java.text.ParseException: Unparseable date: "Sun Jan 12 00:00:00 EST 2014" (at offset 0)

如果我以 yyyy/MM/dd 格式保存日期,不应该以相同的格式存储吗? 感谢您的建议。

编辑: 我不知道为什么,但在此之后:

DatePicker tmpDatePicker = (DatePicker) dateDialog.findViewById(R.id.date_picker);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date tmpDate = dateForma.parse("2014-01.12");
tmpDate.toString();

输出为 2014 年美国东部时间 1 月 12 日星期日 00:00:00。 我怎样才能改变它?

最佳答案

Your own answer是正确的。

但我必须说 java.util.Date、.Calendar 和 java.text.SimpleDateFormat 类是出了名的麻烦。大多数人很高兴避免使用它们,而是使用 Joda-Time (或者 Java 8 中的新 java.time 包,但 Android 中没有)。

Joda-Time 2.3 提供LocalDate仅处理日期的类,没有时间部分或时区。

Joda-Time 默认使用 ISO 8601格式化日期时间值的字符串表示形式的标准方法,显然是您所寻求的。如果需要,Joda-Time 也可以使用本地化或自定义格式。

String input = "2014-01-12";
LocalDate localDate = new LocalDate( input );
String output = localDate.toString();

您可以根据其他类/框架的需要在 java.util.Date 之间进行转换。

java.util.Date date = localDate.toDate();
String dateAsString = date.toString();

运行时...

input: 2014-01-12
output: 2014-01-12
dateAsString: Sun Jan 12 00:00:00 PST 2014

关于java - 已编辑 : How can I change date format of Date object?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23045460/

相关文章:

javascript - 为什么 Date#getHours() 返回小时 + 1?

javascript - JavaScript 日期范围是什么

java - 重写 getColumnClass 方法后,jTable 仍然错误地对数字进行排序

java - Java中如何在运行时生成泛型类?

android - RecyclerView onScrollChangeListener

android - 滑动菜单(库)始终全屏

php - PHP 中显示带有语言细节的日期的函数

java - 如何将jmeter属性路径指向maven下载的jmeter jar路径?

java - 如何唯一标识一个hibernate sql查询

javascript - HTML jquery onclick 事件不适用于仅在 Android 手机上动态创建的链接