2012-03-13 53 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

相关问题