Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不可剥夺的日期:“;2014-02-24T00:54:12.417-06:00;在爪哇_Java_Jakarta Ee - Fatal编程技术网

Java 不可剥夺的日期:“;2014-02-24T00:54:12.417-06:00;在爪哇

Java 不可剥夺的日期:“;2014-02-24T00:54:12.417-06:00;在爪哇,java,jakarta-ee,Java,Jakarta Ee,我想将日期:2014-02-24T00:54:12.417-06:00转换为IST格式 到目前为止,我做到了: String s = "2014-02-24T00:54:12.417-06:00"; DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"); Date d = formatter.parse(s); TimeZone tx=TimeZone.getTi

我想将日期:
2014-02-24T00:54:12.417-06:00
转换为IST格式

到目前为止,我做到了:

    String s = "2014-02-24T00:54:12.417-06:00";
    DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZZZ");
    Date d = formatter.parse(s);


    TimeZone tx=TimeZone.getTimeZone("Asia/Calcutta");
    formatter.setTimeZone(tx);
    System.out.println("Formatted date in IST = " + formatter.format(d));
    String istDateFormat = formatter.format(d);
    //Date da=formatter.format(d);
    return istDateFormat;  
但我得到了一个错误:

Unparseable date: "2014-02-24T00:54:12.417-06:00"  
这是很好的工作,请查看Java文档中的示例。在你的时区之间有

您的图案适用于
2001-07-04T12:08:56.235-0700
格式

这是很好的工作,请查看Java文档中的示例。在你的时区之间有

您的模式适用于日期格式

但是你的日期字符串是

所以它无法解析你的日期

执行以下任一操作

  • 将格式化程序更改为ISO格式(即将
    ZZZ
    更改为
    XXX
  • 或者更改日期字符串,如2014-02-24T00:54:12.417-0600
您正在使用的日期格式

但是你的日期字符串是

所以它无法解析你的日期

执行以下任一操作

  • 将格式化程序更改为ISO格式(即将
    ZZZ
    更改为
    XXX
  • 或者更改日期字符串,如2014-02-24T00:54:12.417-0600

使用这种格式:“yyyy-MM-dd'HH:MM:ss.SSSX”

使用这种格式:“yyy-MM-dd'HH:MM:ss.SSSX”

与java绑定的java.util.Date&.Calendar和SimpleDateFormat类是出了名的麻烦。避开它们

替代方案和新的解决方案可以用更少的代码解决您的问题。不需要麻烦格式化程序和解析,因为它们都直接接受格式化字符串

注意一个很大的区别:虽然java.util.Date对象没有时区(实际上是UTC/GMT),但在Joda time(DateTime)和java.time(ZonedDateTime)中,日期时间对象都知道自己分配的时区和偏移量

乔达时间 转储到控制台

System.out.println( "input: " + input );
System.out.println( "dateTimeUtc: " + dateTimeUtc );  
System.out.println( "dateTimeIndia: " + dateTimeIndia );   
System.out.println( "input: " + input );
System.out.println( "zonedDateTimeUtc: " + zonedDateTimeUtc );
System.out.println( "zonedDateTimeIndia: " + zonedDateTimeIndia );
当运行时

输入:2014-02-24T00:54:12.417-06:00
日期时间UTC:2014-02-24T06:54:12.417Z
日期时间印度:2014-02-24T12:24:12.417+05:30
java.time(Java8) 转储到控制台

System.out.println( "input: " + input );
System.out.println( "dateTimeUtc: " + dateTimeUtc );  
System.out.println( "dateTimeIndia: " + dateTimeIndia );   
System.out.println( "input: " + input );
System.out.println( "zonedDateTimeUtc: " + zonedDateTimeUtc );
System.out.println( "zonedDateTimeIndia: " + zonedDateTimeIndia );
当运行时

输入:2014-02-24T00:54:12.417-06:00
时区时间UTC:2014-02-24T06:54:12.417Z
印度时间:2014-02-24T12:24:12.417+05:30[亚洲/加尔各答]

与java捆绑在一起的java.util.Date、.Calendar和SimpleDataFormat类是出了名的麻烦。避开它们

替代方案和新的解决方案可以用更少的代码解决您的问题。不需要麻烦格式化程序和解析,因为它们都直接接受格式化字符串

注意一个很大的区别:虽然java.util.Date对象没有时区(实际上是UTC/GMT),但在Joda time(DateTime)和java.time(ZonedDateTime)中,日期时间对象都知道自己分配的时区和偏移量

乔达时间 转储到控制台

System.out.println( "input: " + input );
System.out.println( "dateTimeUtc: " + dateTimeUtc );  
System.out.println( "dateTimeIndia: " + dateTimeIndia );   
System.out.println( "input: " + input );
System.out.println( "zonedDateTimeUtc: " + zonedDateTimeUtc );
System.out.println( "zonedDateTimeIndia: " + zonedDateTimeIndia );
当运行时

输入:2014-02-24T00:54:12.417-06:00
日期时间UTC:2014-02-24T06:54:12.417Z
日期时间印度:2014-02-24T12:24:12.417+05:30
java.time(Java8) 转储到控制台

System.out.println( "input: " + input );
System.out.println( "dateTimeUtc: " + dateTimeUtc );  
System.out.println( "dateTimeIndia: " + dateTimeIndia );   
System.out.println( "input: " + input );
System.out.println( "zonedDateTimeUtc: " + zonedDateTimeUtc );
System.out.println( "zonedDateTimeIndia: " + zonedDateTimeIndia );
当运行时

输入:2014-02-24T00:54:12.417-06:00
时区时间UTC:2014-02-24T06:54:12.417Z
印度时间:2014-02-24T12:24:12.417+05:30[亚洲/加尔各答]

Check my updated answer Check my updated answer'X'只适用于Java 7。ISO8601日期更难用Java6解析,但“X”只能在Java7中工作。ISO8601日期更难用Java6解析