关于android:将字符串转换回java Date

Convert string back to java Date

本问题已经有最佳答案,请猛点这里访问。

我有一个日期字符串形式:

"Sun Sep 18 00:05:35 GMT+07:00 2016"

我从Media store Date Taken获取此格式。 如何将其转换为java / android中的Date对象?


可以使用SimpleDateFormat类将String中的日期解析为现有日期对象。 通过创建SimpleDateFormat对象并在其构造函数中指定日期模式,您将能够解析存储在字符串中的日期。

对于您的特定情况代码将如下所示:

1
2
3
4
5
6
7
8
SimpleDateFormat format = new SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy");

Date date = null;
try {
    date = format.parse(dateAsString);
} catch (ParseException e) {
    e.printStackTrace();
}

从模式可以看出:

EEE - Day of the week in three letters (e.g. Sun, Mon, Tue, Wed, Thu, Fri, Sat)

MMM - month of the year (between 0 and 11)

dd - day of the month

HH - hour (between 00 and 23)

mm - minutes (between 00 and 59)

ss - seconds (between 00 and 59)

z - TimeZone (in your case, General Time Zone - GMT)

yyyy - year

此外,如果您还想将此Date对象传递给某个Calendar对象,则还需要在此处设置时区。

1
2
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT+07:00"));
calendar.setTime(date);

但是,如果您更改了TimeZone,则可以从字符串中提取timeZone部分:

1
2
3
String timeZone = dateAsString.substring(19, 28);
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone(timeZone));
calendar.setTime(date);

请注意substring()函数的起始和结束索引