在Android中,每个事件的日期(例如生日和纪念日)都以String格式保存,例如“ 2011-12-24”。
至少我的手机是这种情况。如果某些其他电话的日历与公历不同,则可能以其他格式存储这些日期。
即使对于带有公历日历设置的电话,也存在带小时和分钟且不带日期和日期的日期字符串。当我查询联系人表中的事件时,得到这样的日期字符串:
cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Event.START_DATE))
结果是(例如):
“ 2011-12-14”或“ 2011-12-24T00:00:00Z”
您会看到有许多不同的可能格式。为了计算日期,我需要将它们从String转换为Date对象,不是吗?
我怎样才能做到这一点?
PS:我知道有一个Java日期对象的解析函数:
DateFormat myDateFormat = new SimpleDateFormat("dd/MM/yy"); Date tempDate = myDateFormat.parse("24/12/2011");
但是在Android中,我不知道会遇到哪种格式,对吗?
Android使用日期对象。任何时候您需要从字符串中解析日期是因为该日期已被序列化,很可能是在文件中。在这种情况下,您会知道所使用的格式。日期对象用于首选项,日期对象几乎在所有我能想到的与共享服务,活动等有关的地方都使用。这意味着,几乎不需要从日期解析字符串,除非像我说的那样序列化的源,可以从Web服务中读取它,等等。如果您可以告诉我们您的情况,则可能会得到更具体的答案。
您可以这样获取当前设置的日期格式:
DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());