如何在Java中解析自定义的多种日期格式
我想用Java解析自定义的多种日期格式。这是我的密码 场景1: 图案顺序:如何在Java中解析自定义的多种日期格式,java,java-time,Java,Java Time,我想用Java解析自定义的多种日期格式。这是我的密码 场景1: 图案顺序: String dateString1 = "201028h05"; LocalDateTime date1 = LocalDateTime.parse(dateString1, formatter); String dateString2 = "201028"; LocalDateTime date1 = LocalDateTime.parse(dateString2, fo
String dateString1 = "201028h05";
LocalDateTime date1 = LocalDateTime.parse(dateString1, formatter);
String dateString2 = "201028";
LocalDateTime date1 = LocalDateTime.parse(dateString2, formatter);
String dateString1 = "201028h05";
LocalDateTime date1 = LocalDateTime.parse(dateString1, formatter);
String dateString2 = "201028";
LocalDateTime date1 = LocalDateTime.parse(dateString2, formatter);
- yyMMdd'h'HH
- 年月日
String dateString1 = "201028h05";
LocalDateTime date1 = LocalDateTime.parse(dateString1, formatter);
String dateString2 = "201028";
LocalDateTime date1 = LocalDateTime.parse(dateString2, formatter);
String dateString1 = "201028h05";
LocalDateTime date1 = LocalDateTime.parse(dateString1, formatter);
String dateString2 = "201028";
LocalDateTime date1 = LocalDateTime.parse(dateString2, formatter);
不起作用:
String dateString1 = "201028h05";
LocalDateTime date1 = LocalDateTime.parse(dateString1, formatter);
String dateString2 = "201028";
LocalDateTime date1 = LocalDateTime.parse(dateString2, formatter);
String dateString1 = "201028h05";
LocalDateTime date1 = LocalDateTime.parse(dateString1, formatter);
String dateString2 = "201028";
LocalDateTime date1 = LocalDateTime.parse(dateString2, formatter);
场景2:
图案顺序:
String dateString1 = "201028h05";
LocalDateTime date1 = LocalDateTime.parse(dateString1, formatter);
String dateString2 = "201028";
LocalDateTime date1 = LocalDateTime.parse(dateString2, formatter);
String dateString1 = "201028h05";
LocalDateTime date1 = LocalDateTime.parse(dateString1, formatter);
String dateString2 = "201028";
LocalDateTime date1 = LocalDateTime.parse(dateString2, formatter);
- 年月日
- yyMMdd'h'HH
String dateString1 = "201028h05";
LocalDateTime date1 = LocalDateTime.parse(dateString1, formatter);
String dateString2 = "201028";
LocalDateTime date1 = LocalDateTime.parse(dateString2, formatter);
String dateString1 = "201028h05";
LocalDateTime date1 = LocalDateTime.parse(dateString1, formatter);
String dateString2 = "201028";
LocalDateTime date1 = LocalDateTime.parse(dateString2, formatter);
有效:
String dateString1 = "201028h05";
LocalDateTime date1 = LocalDateTime.parse(dateString1, formatter);
String dateString2 = "201028";
LocalDateTime date1 = LocalDateTime.parse(dateString2, formatter);
String dateString1 = "201028h05";
LocalDateTime date1 = LocalDateTime.parse(dateString1, formatter);
String dateString2 = "201028";
LocalDateTime date1 = LocalDateTime.parse(dateString2, formatter);
如何使其适用于两种日期模式,而不考虑任何输入模式顺序。我不想对此使用任何外部依赖项。您可以使用
[]
定义模式中的可选部分。此外,您需要设置默认值,以便在没有提供时间的情况下不获取异常
DateTimeFormatter formatter=新的DateTimeFormatterBuilder()
.appendPattern(“yyMMdd['h'HH]”)
.parseDefaulting(ChronoField.HOUR\u OF_DAY,0)
.parseDefaulting(ChronoField.MINUTE\u OF_HOUR,0)
.parseDefaulting(ChronoField.SECOND\u/u分钟,0)
.toFormatter();
字符串dateString1=“201028h05”;
LocalDateTime date1=LocalDateTime.parse(dateString1,格式化程序);
系统输出打印项次(日期1);
字符串dateString2=“201028”;
LocalDateTime date2=LocalDateTime.parse(dateString2,格式化程序);
系统输出打印项次(日期2);
输出:
如果交换插入模式的顺序会怎么样?从最普通到更具体(而不是更具体到最普通)?如果我交换订单,它会起作用。但输入值应该与第一个模式匹配,如果不匹配,则会抛出错误。我不确定是否理解,但第二个
dateString1
与模式yymmd'h'HH
,因为它缺少整个'h'HH
组件。您需要在第二个dateString1
中添加某种h00
类型的内容,才能被第一个模式捕获。@npinti使用场景更新问题当字符串中没有小时时,您希望或期望得到什么样的结果?这很有效。