Java如何在java中传递时间格式" Fri Jan 24 12:22:13 +0000 2014"

时间:2014-01-24 14:01:05

标签: java android datetime

我从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)

2 个答案:

答案 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();