sur*_*day 5 java datetime datetime-format java-8 java.time.instant
我想将字符串日期格式转换为java.time.Instant
我在解析日期时遇到异常.
java.lang.IllegalArgumentException: Too many pattern letters: s
Run Code Online (Sandbox Code Playgroud)
我使用下面的代码进行转换,从String到date.
String string = "2018-07-17T09:59:51.312Z";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("YYYY-MM-DD'T'hh:mm:ss.sssZ", Locale.FRANCE);
LocalDate date = LocalDate.parse(string, formatter);
System.out.println(date);
Run Code Online (Sandbox Code Playgroud)
我想转换"timestamp":"2018-07-17T09:59:51.312Z"
在YYYY-MM-DDThh:mm:ss.sssZ
UTC时区中以ISO 8601格式的格式时间.
检查Java字符串到日期的转换,但不起作用.
将字符串日期格式转换为java.time.Instant
跳过格式化模式.只是解析.
Instant.parse( "2018-07-17T09:59:51.312Z" )
Run Code Online (Sandbox Code Playgroud)
是的,您使用了错误的格式设置模式,如第一个答案中所示.
但是您根本不需要指定格式化模式.您的输入字符串采用标准ISO 8601格式.在解析/生成字符串时,java.time类默认使用ISO 8601格式.
在Z
上月底表示UTC,发音为"祖鲁".
Instant instant = Instant.parse( "2018-07-17T09:59:51.312Z" ) ;
Run Code Online (Sandbox Code Playgroud)
该java.time框架是建立在Java 8和更高版本.这些类取代麻烦的老传统日期时间类,如java.util.Date
,Calendar
,和SimpleDateFormat
.
现在处于维护模式的Joda-Time项目建议迁移到java.time类.
要了解更多信息,请参阅Oracle教程.并搜索Stack Overflow以获取许多示例和解释.规范是JSR 310.
您可以直接与数据库交换java.time对象.使用符合JDBC 4.2或更高版本的JDBC驱动程序.不需要字符串,不需要课程.java.sql.*
从哪里获取java.time类?
该ThreeTen-额外项目与其他类扩展java.time.该项目是未来可能添加到java.time的试验场.您可以在此比如找到一些有用的类Interval
,YearWeek
,YearQuarter
,和更多.
Don\xe2\x80\x99t 不会为编写自己的格式模式字符串而苦苦挣扎。您的字符串采用内置于 java.time 中的 ISO 8601 格式。解析为java.time.Instant
(如你的标题所示):
String string = "2018-07-17T09:59:51.312Z";\n Instant inst = Instant.parse(string);\n System.out.println(inst);\n
Run Code Online (Sandbox Code Playgroud)\n\n输出:
\n\n\n\n\n2018-07-17T09:59:51.312Z
\n
解析为LocalDate
(正如您的代码片段似乎想要的那样):
LocalDate date = LocalDate.parse(string, DateTimeFormatter.ISO_OFFSET_DATE_TIME);\n System.out.println(date);\n
Run Code Online (Sandbox Code Playgroud)\n\n\n\n\n2018-07-17
\n
格式模式字母区分大小写(您也可以从您链接到的问题的第一个答案中的表格中看到这一点)。
\n\nYYYY
表示年份。大写字母Y
表示周年,仅适用于周数。使用uuuu
或 小写字母yyyy
表示年份。DD
代表一年中的某一天。对于月份中的某一天,您需要小写dd
。hh
表示从 01 到 12 的 AM 或 PM 的小时,并且仅与 AM/PM 标记一起使用。HH
一天中从 00 到 23 的小时需要大写。最后,您正确地使用了小写字母ss
表示秒,但也正确sss
使用了小写字母。对于后者,您需要大写SSS
。此错误是您的错误消息的原因:由于秒最多只能达到 60(包括闰秒),因此 3 是s
没有sss
意义的,并且DateTimeFormatter
对此表示反对。从文档中:
\n最多可以指定两个字母\'d\'、\'H\'、\'h\'、\'K\'、\'k\'、\'m\'和\'s\' 。
\n
归档时间: |
|
查看次数: |
2088 次 |
最近记录: |