我是安卓新手。我在数据库中有一个表,其中日期列为字符串类型,并以这种格式“dmyyyy”存储日期我需要从 sqlite 数据库中检索以这种格式存在的日期并将该值更新到 DatePicker 视图。我如何实现这一点,请帮助我。
例如:“1102012”(2012 年 11 月 1 日)
提前致谢。
我是安卓新手。我在数据库中有一个表,其中日期列为字符串类型,并以这种格式“dmyyyy”存储日期我需要从 sqlite 数据库中检索以这种格式存在的日期并将该值更新到 DatePicker 视图。我如何实现这一点,请帮助我。
例如:“1102012”(2012 年 11 月 1 日)
提前致谢。
首先,您为什么首先将它们存储为该格式的字符串?您的格式完全模棱两可-假设您在示例中犯了一个错误,您将如何区分“1 月 11 日”和“11 月 1 日”?两者都是“111”,然后是年份。
据我了解,SQLite 通常使用 ISO-8601 日期和时间表示——这就是它的日期/时间函数所使用的,这也是我期望客户端库公开的。
无论如何,在解析方面,您可以使用Joda Time,它是一个第三方日期/时间 API,比内置和类要好得多,也可以使用. 我建议您明确指定(理想情况下,不是用户的语言环境 - 这只是为了存储)时区(同样,您几乎可以肯定使用 UTC 而不是用户的时区)和模式(例如ISO-8601 )。然后用于检索... 您可能希望将其设置为具有相同时区的 a ,以便获得更多有用的信息。Date
Calendar
SimpleDateFormat
Locale
Locale.US
yyyy-MM-dd
parse
Date
Calendar
试试这样
String dateStr = "5/31/2011";
DateFormat df = new SimpleDateFormat("M/dd/yyyy");
Date date = df.parse(dateStr);
日期应采用 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));