我从twitter获得了以下创建日期“Fri Jan 24 12:22:13 +0000 2014”,但是当涉及解析时,在“z”处转到不可解决的异常错误
请您告诉他们什么是正确的时间格式? 以下是我的代码
String dateString = fullS.substring(0, 11) + " "+ year;
String timeZoneHK = content.getTimeZone();
SimpleDateFormat inputDf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
SimpleDateFormat outputDf = new SimpleDateFormat("HH:mm:ss EEE MMM dd yyyy");
Date date;
try {
TimeZone timezone = null;
date = inputDf.parse(dateString);
if(timeZoneHK.equals("Hong Kong")){
timezone = TimeZone.getTimeZone("Asia/Hong_Kong");
}
outputDf.setTimeZone(timezone);
String result =outputDf.format(date);
//System.out.println(outputDf.format(date));
viewHolder.txtDate.setText(result);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
异常
01-24 22:10:30.061: W/System.err(12573): java.text.ParseException: Unparseable date: "Fri Jan 24 13:37:08 +0000 2014" (at offset 0)
答案 0 :(得分:2)
如果要应用指定的"Fri Jan 24 12:22:13 +0000 2014"
,请使用完整日期字符串format
。并将z
更改为Z
:
SimpleDateFormat inputDf = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy");
请参阅:SimpleDateFormat
Z - 时区(RFC 822) - (时区)Z / ZZ / ZZZ:-0800 - ZZZZ:GMT-08:00 ZZZZZ:-08:00
答案 1 :(得分:1)
使用第三方开源日期时间库Joda-Time,这种工作要容易得多。
以下是一些使用Joda-Time 2.3的示例代码。
String input = "Fri Jan 24 12:22:13 +0000 2014";
DateTimeFormatter formatter = DateTimeFormat.forPattern( "EEE MMM dd HH:mm:ss Z yyyy" );
// Parse as UTC/GMT (no time zone offset) so we may conveniently compare to input.
DateTime dateTimeUtc = formatter.withZone( DateTimeZone.UTC ).parseDateTime( input );
// Convert to Hong Kong time zone.
DateTime dateTimeHongKong = dateTimeUtc.toDateTime( DateTimeZone.forID( "Asia/Hong_Kong" ) );
转储到控制台...
System.out.println( "dateTimeUtc: " + dateTimeUtc );
System.out.println( "dateTimeHongKong: " + dateTimeHongKong );
跑步时......
dateTimeUtc: 2014-01-24T12:22:13.000Z
dateTimeHongKong: 2014-01-24T20:22:13.000+08:00
如果您需要java.util.Date用于其他目的,请转换DateTime。
java.util.Date date = dateTime.toDate();