在 Android 中,每个事件的日期(例如生日和周年纪念日)都以字符串格式保存,例如“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 使用日期对象。任何时候您需要从字符串中解析日期都是因为该日期已被序列化,很可能在文件中。在这种情况下,您将知道所使用的格式。日期对象用于首选项,日期对象几乎在我能想到的所有与共享服务、 Activity 等相关的地方使用。这意味着,几乎不需要从日期解析字符串,除非,就像我说的那样,你正在使用序列化源,从网络服务等读取它。
如果你能告诉我们你的场景,你可能会得到更具体的答案。
您可以像这样获取当前设置的日期格式:
DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
关于java - 将 Android 的日期字符串转换为日期对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8640474/