将字符串转换回java日期
问题出现的原因是需要将字符串类型的日期转换回Java的Date对象。解决方法是使用SimpleDateFormat类将字符串解析为日期对象,并设置日期的格式。具体代码如下:
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:星期几的缩写(例如Sun,Mon,Tue,Wed,Thu,Fri,Sat)
- MMM:月份(0到11)
- dd:日期
- HH:小时(00到23)
- mm:分钟(00到59)
- ss:秒(00到59)
- z:时区(在本例中,使用通用时区GMT)
- yyyy:年份
如果需要将这个Date对象传递给Calendar对象,还需要设置时区:
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()函数的起始和结束索引。
如果你想要使用GMT+07:00时区,可以使用以下格式字符串:
"GMT+07:00"
如果有更新的回答,请参考并测试,让我知道是否有效。