解析此日期的正确表单是什么?:2015-05-29T00:00:00+02:00
DateFormat format = new SimpleDateFormat("yyyyy-mm-dd hh:mm:ss");
Date data = format.parse(dataValue);
答案 0 :(得分:1)
尝试
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
请注意
MM
代表几个月,而mm
代表分钟。 HH
,hh
适用于12小时格式XXX
代表-08:00
T
这样的文字格式,您需要使用'
'T'
来包围它
答案 1 :(得分:0)
旧的日期时间 API(java.util
日期时间类型及其格式 API,SimpleDateFormat
)已经过时且容易出错。建议完全停止使用,改用java.time
,modern date-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());
从 modern date-time API 中了解有关 Trail: Date Time* 的更多信息。
* 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用 ThreeTen-Backport,它将大部分 java.time 功能向后移植到 Java 6 & 7. 如果您正在为 Android 项目工作并且您的 Android API 级别仍然不符合 Java-8,请检查 Java 8+ APIs available through desugaring 和 How to use ThreeTenABP in Android Project。