2013-05-07 62 views
0

在我的应用程序中,一个重要的功能是将日期保存到SQLite数据库。在数据库中存储来自Java的Date对象的正确方法是什么?从数据库读入日期对象的最佳方法是什么?我是否必须使用utilsql(来自命名空间)Date?显示存储并从数据库读取日期

此外,应用程序应该从Play商店发布到所有国家,所以我想在正确的位置字符串中显示日期。如果我想在这样一个TextView显示字符串:

Freitag, 06.03.2012  // Germany 
Friday, 03.06.2012  // US (don't know if this is correct for US) 

// The 0 befor one numbers is important for me 

是否有Android的一个方式,在当前位置,即在设置设置为创建如上一个DateString?我想尽可能少使用弃用的方法。

+0

将unix时间戳存储在数据库中通常最简单,然后在渲染时将其格式化。 – Supericy 2013-05-07 20:37:07

回答

2

SQLite Date and Time functions

时间字符串可以在以下任何一种格式:

1)YYYY-MM-DD

所以,你应该使用插入数据库日期该格式。 当你想在android中显示日期时,你可以查询数据库(获取格式为YYYY-MM-DD的行)。

之后,您可以以您想要的方式格式化该值。例如,如果你想Friday, 03.06.2012你能做到这样:

try { 
    String dateString = "2013-05-07"; 
    SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd",Locale.US); 
    Date date = inputFormat.parse(dateString); 
    SimpleDateFormat outputFormat = new SimpleDateFormat("EEEE, dd.MM.yyyy", Locale.US); 
    String result = outputFormat.format(date); 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 

现在result你有Tuesday, 07.05.2013。如果您将区域设置更改为Locale.GERMAN,您将获得Dienstag, 07.05.2013

+0

非常感谢你的作品。如果我想为当前位置输出正确的DateString,有没有办法从'SimpleDateFormat'的第二个参数从Android获取当前位置? – Cilenco 2013-05-08 04:15:40

+1

是的,您可以使用[Locale.getDefault()](http://developer.android.com/reference/java/util/Locale.html#getDefault()),它允许您知道用户的首选区域设置。 – user2340612 2013-05-08 09:59:23

相关问题