将字符串转换回java日期

将字符串转换回java日期,java,android,date,calendar,simpledateformat,Java,Android,Date,Calendar,Simpledateformat,我有一个日期字符串,格式如下: “2016年9月18日星期日00:05:35 GMT+07:00” 我从媒体商店获取此格式。如何在java/android中将其转换为日期对象?可以使用SimpleDataFormat类将字符串中的日期解析为现有的日期对象。通过创建SimpleDataFormat对象并在其构造函数中指定日期模式,您将能够解析存储在字符串中的日期 对于您来说,特定案例代码如下所示: SimpleDateFormat format = new SimpleDateFormat("EE

我有一个日期字符串,格式如下:

“2016年9月18日星期日00:05:35 GMT+07:00”


我从媒体商店获取此格式。如何在java/android中将其转换为日期对象?

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

对于您来说,特定案例代码如下所示:

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-一周中的三个字母(例如,星期日、星期一、星期二、星期三、星期四、星期五、星期六)

MMM一年中的一个月(介于0和11之间)

dd-月日

HH小时(00到23之间)

mm分钟(00到59之间)

ss-秒(00到59之间)

z-时区(在您的情况下,为通用时区-GMT)

yyyy-年

此外,如果您还想将此
日期
对象传递给某个
日历
对象,您还需要在那里设置时区

Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT+07:00"));
calendar.setTime(date);
但是,如果时区发生更改,则可以从字符串中提取时区部分:

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

只需小心
substring()
函数的起始索引和结束索引,您必须使用class。它是否有效?发布前搜索堆栈溢出。这已经被询问了数百次。GMT+07的格式字符串是什么:00@PraveenPandey我已经更新了我的答案。看看它,让我知道它是否有效