有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java编辑:如何更改日期对象的日期格式?

我已使用以下查询在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);

从数据库中再次获取行“date”的值后,我得到以下错误:

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。 我怎样才能改变它


共 (2) 个答案

  1. # 1 楼答案

    Your own answer是正确的

    但是我必须说java。util。日期日历和java。文本SimpleDataFormat类是出了名的麻烦。大多数人都乐于避免使用Joda-Time(或者Java8中的新java.time包,但不使用Android)

    Joda-Time2.3提供了一个^{}类,只用于处理日期,没有时间段或时区

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

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

    您可以与java进行转换。util。其他类/框架所需的日期

    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
    
  2. # 2 楼答案

    我想出来了。方法将格式设置为2014年东部时间1月12日00:00:00。 要获得SimpleDataFormat构造函数模式中给定的格式,我需要使用:

    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    Date tmpDate = dateFormat.parse("2014-01-12");
    dateFormat.format(tmpDate);
    

    产量为2014-01-12