从String获取DateTime

时间:2017-02-17 10:35:52

标签: java datetime

我正在开发一个java样本,其中日期是字符串,如 2016-07-19T16:54:03.000 + 05:30 。 我想将它转换为DateTime对象。我怎么能在java中做到这一点? 我试过这段代码 -

DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSS+Z").parseDateTime("2016-07-19T16:54:03.000+05:30")

它提供 java.lang.IllegalArgumentException:格式无效:“2016-07-19T16:54:03.000 + 05:30”格式错误为“05:30”例外。

3 个答案:

答案 0 :(得分:1)

您可以使用SimpleDateFormat

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

class Main {
  public static void main(String[] args) {
    try {
      SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX");
      Date parsed = format.parse("2016-07-19T16:54:03.000+05:30");
      System.out.println(parsed);
    } catch (ParseException e){
      e.printStackTrace();
    }
  }
}

<强>输出:

Tue Jul 19 11:54:03 UTC 2016

试试here!

答案 1 :(得分:1)

您需要使用 ZZ 而不是Z来获取时区信息。

DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZZ").parseDateTime("2016-07-19T16:54:03.000+05:30")

取自Javadoc

  

模式字母的数量决定了格式。

     

区域:&#39; Z&#39;没有冒号的输出偏移,&#39; ZZ&#39;用冒号输出偏移,&#39; ZZZ&#39;或更多输出区域ID。

答案 2 :(得分:0)

您可以尝试 java.text.DateFormat

String DEFAULT_DATE_PARSE_PATTERN="dd.MM.yyyy";
DateFormat format = new SimpleDateFormat(DEFAULT_DATE_PARSE_PATTERN);
Date result = format.parse(your_value);