我正在开发一个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”例外。
答案 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);