2012-03-13 79 views
0

下面是我的簡單的日期碼format.Where IAM越來越O/P爲無法獲取日期所需的SimpleDateFormat

  1. 2012-03-13
  2. 13:15:00-4:00
  3. 2012/03/13 13:15:00 +0530

但我需要格式的o/p MM/dd/yyyy HH:mm

public class Time { 
     public static void main(String args[]) throws ParseException 
     { 
      SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
      SimpleDateFormat ti=new SimpleDateFormat("MM/dd/yyyy HH:mm"); 
      SimpleDateFormat sdf1=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss Z"); 
      String dt= "2012-03-13T13:15:00-4:00"; 

     String st[]=dt.split("T"); 
     System.out.println(st[0]); 
     System.out.println(st[1]); 

     String time[]= st[1].split("-"); 

     Date fromDt =(Date)sdf.parse(st[0]+" "+time[0]); 



     System.out.println(sdf1.format(fromDt)); 


    } 

} 
+0

是-0400是你的[Z時區(http://docs.oracle.com/javase/1.5.0/docs/api/java/text/SimpleDateFormat.html#rfc822timezone)?或者它是-4(00)m(m):你想從給定日期減去的ss格式的時間量? – JMelnik 2012-03-13 12:56:36

+0

其ia時區 – Pawan 2012-03-13 13:27:59

回答

0

不知道我理解正確,但似乎你的最後一行應該是:

System.out.println(ti.format(fromDt)); //prints 03/13/2012 13:15 

如果你輸入了正確的格式(注意-04:00而不是DT -4:00),你可以只是做這樣的:

SimpleDateFormat input = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX"); 
SimpleDateFormat output = new SimpleDateFormat("MM/dd/yyyy HH:mm"); 
String dt = "2012-03-13T13:15:00-04:00"; 
Date date = input.parse(dt); 
System.out.println(output.format(date)); //prints 03/13/2012 17:15 with my local timezone 
output.setTimeZone(TimeZone.getTimeZone("GMT-08:00")); 
System.out.println(output.format(date)); //prints 03/13/2012 09:15 

注:XXX已經在Java 7中引入所以不會與JDK的早期版本。

+0

雅如果我這樣做,那麼我會得到,但會缺少輸入提供的-4:00。請檢查i/p(字符串dt)一次 – Pawan 2012-03-13 12:40:41

+0

您希望最後一行打印什麼? '03/13/2012 17:15'? – assylias 2012-03-13 12:42:30

+0

你正確的我需要得到2012年3月13日09:15 – Pawan 2012-03-13 12:44:47

0

只需在您的格式中使用'T'字面值,然後SimpleDateFormat將爲您執行解析。這是一個在java 6中工作的解決方案,它處理的是-4.00,它通過分離行尾的垃圾並請求TimeZone轉換它,然後在SimpleDateFormat上使用該時區。

SimpleDateFormat input = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
SimpleDateFormat output = new SimpleDateFormat("MM/dd/yyyy HH:mm"); 

String dt = "2012-03-13T13:15:00 -4:00"; 

Pattern pattern = Pattern 
     .compile("\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\s*(.*)"); 
Matcher m = pattern.matcher(dt); 
if (m.find()) { 
    String zoneJunk = m.group(1); 
    TimeZone zone = TimeZone.getTimeZone("GMT" + zoneJunk); 
    input.setTimeZone(zone); 
} 

Date date = input.parse(dt); 
System.out.println(output.format(date)); // prints 03/13/2012 17:15 
+0

這裏我需要時區iam期待o/p作爲2012年3月13日9:15 – Pawan 2012-03-13 13:08:21

+0

@ yyyi777更新來處理時區。 – Adam 2012-03-13 14:00:38

相關問題