哪个Java日期格式是这个“YYYY-MM-DD 00:00:00 + 00:00”?
我有一些数据提到日期为“2013-06-30 00:00:00 + 00:00”。我检查了不同的日期格式,但无法找到这一个。有人可以帮忙吗?哪个Java日期格式是这个“YYYY-MM-DD 00:00:00 + 00:00”?
我想应当YYYY-MM-DD 00:00:00+000
0而不是YYYY-MM-DD 00:00:00+00:00
。 这种格式是yyyy-MM-dd HH:mm:ss.SSSZ
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSZ");
Date date = new Date();
System.out.println(dateFormat.format(date));
其他不同的日期格式
yyyy-MM-dd 1969-12-31
yyyy-MM-dd 1970-01-01
yyyy-MM-dd HH:mm 1969-12-31 16:00
yyyy-MM-dd HH:mm 1970-01-01 00:00
yyyy-MM-dd HH:mmZ 1969-12-31 16:00-0800
yyyy-MM-dd HH:mmZ 1970-01-01 00:00+0000
yyyy-MM-dd HH:mm:ss.SSSZ 1969-12-31 16:00:00.000-0800
yyyy-MM-dd HH:mm:ss.SSSZ 1970-01-01 00:00:00.000+0000
yyyy-MM-dd'T'HH:mm:ss.SSSZ 1969-12-31T16:00:00.000-0800
yyyy-MM-dd'T'HH:mm:ss.SSSZ 1970-01-01T00:00:00.000+0000
ISO 8601
至于你提到这是“什么格式”问题的可选的变化,技术上这种格式是ISO 8601的可选变体。 standard allowsT
被通讯方之间的相互协议替换为SPACE。
使用SPACE可能会使字符串在缺乏适当数字字体的情况下更易读。但严格来说,这个SPACE版本不是标准的,所以在系统之间交换数据或将数据序列化为文本时应该包括T
。
使用java.time
其他答案是正确的。这是解析的一个简单的选择。
您的输入字符串几乎符合标准ISO 8601格式。将中间的空格替换为T
以完全符合要求。
String input = "2013-06-30 00:00:00+00:00".replace(" " , "T");
的java.time类取代麻烦的旧的遗留日期时间类。这些较新的类在解析/生成字符串时默认支持ISO 8601格式。
OffsetDateTime odt = OffsetDateTime.parse(input);
关于java.time
的java.time框架是建立在Java 8和更高版本。这些类取代了日期时间类legacy,如java.util.Date
,Calendar
,& SimpleDateFormat
。
Joda-Time项目现在位于maintenance mode,建议迁移到java.time类。请参阅Oracle Tutorial。并搜索堆栈溢出了很多例子和解释。规格是JSR 310。
从何处获取java.time类?
-
Java SE 8和SE 9后来
- 内置。
- 带捆绑实现的标准Java API的一部分。
- Java 9增加了一些次要功能和修复。在ThreeTen-Backport
-
Java SE 6和SE 7
- 大部分的java.time功能后移植到Java 6 & 7。
-
Android
- 的ThreeTenABP项目适应ThreeTen-反向移植(上述)为Android特异性。
- 参见How to use ThreeTenABP…。
的ThreeTen-Extra项目与其他类扩展java.time。这个项目是未来可能增加java.time的一个试验场。您可以在这里找到一些有用的类,如Interval
,YearWeek
,YearQuarter
和more。
你能否详细说明这个日期'2013-06-30 00:00:00 + 00:00'?我认为你的数据在excel表单中? – 2014-12-05 09:49:55
嗯,它看起来不像ISO 8601 – 2014-12-05 09:51:11
嗨...我在CSV文件中获得了这些数据。 – Sameervb 2014-12-05 10:02:10