Android:从字符串到日期的转换

时间:2012-11-09 13:15:11

标签: android date datepicker

我是android的新手。我在数据库中有一个表,其日期列为String类型,并以“dmyyyy”格式存储日期我需要从sqlite数据库中检索此格式的日期,并将该值更新为DatePicker视图。我如何实现这一目标,请帮助我。

例如:“1102012”(2012年11月1日)

提前感谢。

3 个答案:

答案 0 :(得分:2)

首先,为什么首先将它们以该格式存储为字符串?你有一个完全模糊的格式 - 假设你在你的例子中犯了一个错误,你如何区分" 1月11日"和" 11月1日"?两者都是" 111"然后是一年。

据我了解,SQLite通常使用ISO-8601表示日期和时间 - 这是date/time functions使用的,以及我期望客户端库的用途露出。

无论如何,在解析时,您可以 使用Joda Time这是第三方日期/时间API而比构建更好-in DateCalendar类,或者您可以使用SimpleDateFormat。我建议您明确指定Locale(理想情况下类似Locale.US用户的区域设置 - 这仅用于存储)时区(再次,您应该几乎肯定使用UTC而不是用户的时区)和模式(例如ISO {8601的yyyy-MM-dd)。然后使用parse检索Date ...您可能希望将其设置为具有相同时区的Calendar,以获取更多有用的信息

答案 1 :(得分:0)

试试这个

String dateStr = "5/31/2011";
DateFormat df = new SimpleDateFormat("M/dd/yyyy");
Date date = df.parse(dateStr);

答案 2 :(得分:-1)

日期应采用DDMMYYYY格式。格式DMYYYY是不可解析的。在您的班级中添加以下方法;

private int getDay(String s) {
    return Integer.valueOf(s.substring(0, 2));
}

private int getMonth(String s) {
    return Integer.valueOf(s.substring(2, 4));
}

private int getYear(String s) {
    return Integer.valueOf(s.substring(4));
}

然后像这样设置DatePicker:

String dateString = "01112012";
DatePicker datePicker = (DatePicker) findViewById(R.id.date_picker);
datePicker.updateDate(getYear(dateString), getMonth(dateString), getDay(dateString));