小编典典

将Android的日期字符串转换为日期对象

java

在Android中,每个事件的日期(例如生日和纪念日)都以String格式保存,例如“ 2011-12-24”。

至少我的手机是这种情况。如果某些其他电话的日历与公历不同,则可能以其他格式存储这些日期。

即使对于带有公历日历设置的电话,也存在带小时和分钟且不带日期和日期的日期字符串。当我查询联系人表中的事件时,得到这样的日期字符串:

cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Event.ST‌​ART_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中,我不知道会遇到哪种格式,对吗?


阅读 285

收藏
2020-11-26

共1个答案

小编典典

Android使用日期对象。任何时候您需要从字符串中解析日期是因为该日期已被序列化,很可能是在文件中。在这种情况下,您会知道所使用的格式。日期对象用于首选项,日期对象几乎在所有我能想到的与共享服务,活动等有关的地方都使用。这意味着,几乎不需要从日期解析字符串,除非像我说的那样序列化的源,可以从Web服务中读取它,等等。如果您可以告诉我们您的情况,则可能会得到更具体的答案。

您可以这样获取当前设置的日期格式:

DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
2020-11-26