【发布时间】:2015-06-04 22:19:12
【问题描述】:
解析这个日期的正确格式是什么?:2015-05-29T00:00:00+02:00
DateFormat format = new SimpleDateFormat("yyyyy-mm-dd hh:mm:ss");
Date data = format.parse(dataValue);
【问题讨论】:
标签: java date date-format simpledateformat
解析这个日期的正确格式是什么?:2015-05-29T00:00:00+02:00
DateFormat format = new SimpleDateFormat("yyyyy-mm-dd hh:mm:ss");
Date data = format.parse(dataValue);
【问题讨论】:
标签: java date date-format simpledateformat
试试
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
注意
MM 代表月,mm 代表分钟。 HH,hh 用于 12 小时格式XXX 表示格式为-08:00 的时区
T 这样的文字,您需要用单引号将其括起来 ' like 'T'
【讨论】:
yyyy-MM-dd'T'HH:mm:ssXXX 的字符串,并且您想将其转换为格式yyyy-MM-dd 他们我会说最简单的方法是使用子字符串来选择这个yyyy-MM-dd 部分。但是,例如,如果您想将其转换为 dd/MM/yyyy 之类的东西,那么您需要创建另一个日期格式化程序,并简单地由原始格式化程序返回 format Date。所以你的代码可以像String newFormat = newFormatter.format(oldFormatter.parse(stringDate)).
旧的日期时间 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
无论出于何种原因,如果您需要来自 OffsetDateTime 的这个对象的 java.util.Date 实例,您可以按照以下方式进行:
Date date = Date.from(odt.toInstant());
从 Trail: Date Time 了解有关 modern date-time API* 的更多信息。
* 出于任何原因,如果您必须坚持使用 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。
【讨论】: