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

时间:2011-12-27 01:45:10

标签: java android date time

在Android中,每个事件的日期(例如生日和纪念日)都以字符串格式保存,例如“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中,我不知道我将面对哪种格式,是吗?

2 个答案:

答案 0 :(得分:3)

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

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

DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());

答案 1 :(得分:0)

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

SimpleDateFormat myDateFormat = new SimpleDateFormat("dd/MM/yy");
        Date tempDate;
        try {
            tempDate = myDateFormat.parse("24/12/2011");
              long milliseconds=tempDate.getTime();
              Toast.makeText(getApplicationContext(), milliseconds+"", 1).show();
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }