public static void main(String[] args) {
// example String
String datetimeString = "31-12-2014 18:09 +05:30";
// formatter for that very pattern
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(
"dd-MM-uuuu HH:mm xxx", Locale.ENGLISH
);
// use the formatter to get an OffsetDateTime
OffsetDateTime odt = OffsetDateTime.parse(datetimeString, dtf);
// print the result
System.out.println(odt);
// or print the result using the input format
System.out.println(odt.format(dtf));
}
5条答案
按热度按时间ct3nt3jp1#
注意,不能在SimpleDateFormat of JDK7之前使用
X
,因为它是ISO 8601时区格式。在Java6中,您只能使用
ZZZ
,但它不匹配+05:30,因为Z
匹配RFC822时区格式如果您使用的是Java 6,请参考以下答案:将符合ISO 8601的字符串转换为java.util.Date
dced5bon2#
使用X代替Z或ZZ,如下所示:
vdzxcuhz3#
您有两个错误:首先,您应该使用两个
d
表示日期。其次,使用X
代替Z
表示时区。X
表示您正在使用的格式。有关详细信息,请参阅文档。http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html3df52oht4#
其他人指出了Java SE 7中的
X
选项。但是,如果您使用的是较早的Java版本,则可以将时区部分更改为+0530
,然后它将与Z
(即使在Java SE 1.4中也可用)一起工作。oknwwptz5#
给那些偶然发现这些柱子的人:
如果可以,请使用
java.time
,如果您使用的是Java 8或更高版本,则应该是这种情况...下面是如何解析问题中的示例
String
:输出: