解析此日期的正确形式是什么?:
2015-05-29T00:00:00+02:00
DateFormat format = new SimpleDateFormat("yyyyy-mm-dd hh:mm:ss");
Date data = format.parse(dataValue);
尝试使用
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
注意
MM
代表月,而 mm
代表分钟。 HH
,hh
适用于12小时格式XXX
表示时区,格式如 -08:00
T
的文字,您需要用单引号将其引起来 '
就像 'T'
java.time
2014 年 3 月,Java 8 引入了现代的
java.time
日期时间 API,取代了容易出错的旧版java.util
日期时间 API。任何新代码都应使用 java.time
API。
由于现代日期时间 API 基于 ISO 8601 标准,因此您不需要显式使用
DateTimeFormatter
对象来解析符合 ISO 8601 标准的日期时间字符串。您的日期时间字符串包含时区偏移字符串 (+02:00
),因此,用于解析它的最合适的类型是 OffsetDateTime
。
演示:
import java.time.OffsetDateTime;
public class Main {
public static void main(String args[]) {
OffsetDateTime odt = OffsetDateTime.parse("2015-05-29T00:00:00+02:00");
System.out.println(odt);
}
}
输出:
2015-05-29T00:00+02:00
无论出于何种原因,如果您需要
java.util.Date
对象的 OffsetDateTime
实例,您可以按如下方式操作:
Date date = Date.from(odt.toInstant());
从 Trail:日期时间了解有关现代日期时间 API 的更多信息。