提问人:Benny 提问时间:4/4/2020 最后编辑:AnonymousBenny 更新时间:4/5/2020 访问量:188
此 String 格式的正确格式模式是什么?[复制]
What is the correct formatting pattern for this String format? [duplicate]
问:
尝试将 String 转换为带有 threeten 的 ZonedDateTime 时,我收到 DateTimeParseException。我不确定此字符串格式的正确格式模式是什么? 2014-04-16T00:00+02:00[欧洲/柏林].有人能告诉我正确的模式是什么吗?
在站点上注释:是否有某些页面或资源可以在某个地方查找此类内容,而无需自己重建?
谢谢!
答:
3赞
Anonymous
4/5/2020
#1
无需格式化程序:您的格式是 . 两者都解析并打印此格式作为其默认格式,即没有任何显式格式化程序。ZonedDateTime
ZonedDateTime
String s = "2014-04-16T00:00+02:00[Europe/Berlin]";
ZonedDateTime zdt = ZonedDateTime.parse(s);
System.out.println("Parsed into " + zdt);
输出:
解析为 2014-04-16T00:00+02:00[欧洲/柏林]
该格式是从 ISO 8601 格式扩展而来的。ISO 8601 仅包括,因此包括 UTC 偏移量,但不包括时区。java.time 的开发人员对其进行了扩展,以包含时区 ID。2014-04-16T00:00+02:00
如果你想要一个格式化程序:如果你有一个特殊的原因想要一个格式化程序,也许你需要将一个传递给一个方法,或者你只是想明确它你期望的格式,一个是内置的:。因此,您仍然不需要编写任何格式模式字符串。DateTimeFormatter.ISO_ZONED_DATE_TIME
在哪里可以找到这些信息?它位于 java.time 类的文档中。请参阅下面的文档链接。
您自己的代码:感谢您在此答案下的评论中提供自己的代码。对于其他读者,我在这里重复一遍,格式化为可读性。
fun parseZonedDateTimeToString(date: ZonedDateTime): String {
return DateTimeFormatter.ISO_ZONED_DATE_TIME.format(date)
}
fun parseStringToZonedDateTime(dateString: String): ZonedDateTime {
return ZonedDateTime.parse(dateString, DateTimeFormatter.ISO_ZONED_DATE_TIME)
}
链接
- 维基百科文章:ISO 8601
- 文档链接:
- 一个参数
ZonedDateTime.parse()
指定“一个文本字符串,例如”2007-12-03T10:15:30+01:00[Europe/Paris]
ZonedDateTime.toString()
承诺 “a ,例如”String
2007-12-03T10:15:30+01:00[Europe/Paris]
- 具有内置格式化程序的
DateTimeFormatter
以及格式化模式字符串中使用的模式字母 DateTimeFormatter.ISO_ZONED_DATE_TIME,“
类似 ISO 的日期时间格式化程序,用于格式化或解析具有偏移量和区域的日期时间,例如'2011-12-03T10:15:30+01:00[Europe/Paris]'。- 由于上面的链接是指向 Java 10 版本的类的文档,它并不总是与向后移植的文档相同,因此这里是 ThreeTen 向后移植 1.4.2 API 的文档,您也可以在其下找到上述所有项目。
- 一个参数
评论
0赞
Benny
4/5/2020
这是关于如何使用 ZonedDateTime 的宝贵信息,谢谢!对我来说特别有趣的是使用不同方法的不同文档链接。正如你所说,ThreeTen 向后移植略有不同。
0赞
Benny
4/5/2020
我使用以下两种方法将 ZonedDateTime 转换为 String,反之亦然: fun parseZonedDateTimeToString(date: ZonedDateTime): String { return DateTimeFormatter.ISO_ZONED_DATE_TIME.format(date) } fun parseStringToZonedDateTime(dateString: String): ZonedDateTime { return ZonedDateTime.parse(dateString, DateTimeFormatter.ISO_ZONED_DATE_TIME) } 这工作得很好,并没有真正偏离 java.time 类;)谢谢!
评论