8 java date java-time datetimeformatter
我正在尝试将日语日期字符串转换为 JapaneseDate。
\nDateTimeFormatter formatter = DateTimeFormatter.ofPattern("Gyy\xe5\xb9\xb4MM\xe6\x9c\x88dd\xe6\x97\xa5")\n .withChronology(JapaneseChronology.INSTANCE)\n .withResolverStyle(ResolverStyle.LENIENT);\nJapaneseDate d = JapaneseDate.from(formatter.parse("\xe5\xb9\xb3\xe6\x88\x9001\xe5\xb9\xb401\xe6\x9c\x8801\xe6\x97\xa5"));\nSystem.out.println(d);\nSystem.out.println(d.format(formatter));\nRun Code Online (Sandbox Code Playgroud)\n输出:
\nJapanese Reiwa 71-01-01\n\xe4\xbb\xa4\xe5\x92\x8c71\xe5\xb9\xb401\xe6\x9c\x8801\xe6\x97\xa5\nRun Code Online (Sandbox Code Playgroud)\n由于“\xe4\xbb\xa4\xe5\x92\x8c\xe5\x85\x83\xe5\xb9\xb4”是“2019”,“\xe4\xbb\xa4\xe5\x92\x8c71\xe5\xb9\ xb401\xe6\x9c\x8801\xe6\x97\xa5" 为 "2089-01-01"。\n"\xe5\xb9\xb3\xe6\x88\x9001\xe5\xb9\xb401\xe6\x9c\x8801 \xe6\x97\xa5" 必须是 "1989-01-01"。
\n我怎样才能正确地转换它?
\n如果我将解析器样式更改为ResolverStyle.STRICT,它会抛出
java.time.format.DateTimeParseException: Text \'\xe5\xb9\xb3\xe6\x88\x9001\xe5\xb9\xb401\xe6\x9c\x8801\xe6\x97\xa5\'\ncould not be parsed: year, month, and day not valid for Era\nRun Code Online (Sandbox Code Playgroud)\n如果我将解析器样式更改为ResolverStyle.SMART,它会抛出
java.time.format.DateTimeParseException: Text \'\xe5\xb9\xb3\xe6\x88\x9001\xe5\xb9\xb401\xe6\x9c\x8801\xe6\x97\xa5\'\ncould not be parsed: Invalid YearOfEra for Era: Heisei 101\nRun Code Online (Sandbox Code Playgroud)\n
尝试使用这种模式:
\nDateTimeFormatter.ofPattern("Gy\xe5\xb9\xb4MM\xe6\x9c\x88dd\xe6\x97\xa5")\nRun Code Online (Sandbox Code Playgroud)\ny应该单独使用,否则它将在达到时添加一百年11(参见Java\xe3\x83\x90\xe3\x83\xbc\xe3\x82\xb8\xe3\x83\xa7\xe3\ x83\xb3\xe5\x88\xa5\xe3\x81\xae\xe6\x94\xb9\xe5\x85\x83(\xe6\x96\xb0\xe5\x85\x83\xe5\x8f\xb7)\xe5\ xaf\xbe\xe5\xbf\x9c\xe3\x81\xbe\xe3\x81\xa8\xe3\x82\x81 )。
第11年:
\nJapaneseDate d = JapaneseDate.from(formatter.parse("\xe5\xb9\xb3\xe6\x88\x9011\xe5\xb9\xb411\xe6\x9c\x8801\xe6\x97\xa5"));\nRun Code Online (Sandbox Code Playgroud)\n输出:
\nJapanese Reiwa 81-11-01\n\xe4\xbb\xa4\xe5\x92\x8c81\xe5\xb9\xb411\xe6\x9c\x8801\nRun Code Online (Sandbox Code Playgroud)\n12年级:
\nJapaneseDate d = JapaneseDate.from(formatter.parse("\xe5\xb9\xb3\xe6\x88\x9012\xe5\xb9\xb411\xe6\x9c\x8801\xe6\x97\xa5"));\nRun Code Online (Sandbox Code Playgroud)\n输出:
\nJapanese Heisei 12-11-01\n\xe5\xb9\xb3\xe6\x88\x9012\xe5\xb9\xb411\xe6\x9c\x8801\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
382 次 |
| 最近记录: |