2 回答
TA贡献1906条经验 获得超10个赞
这个“可能”或“可能不”与您遇到的问题直接相关,但它应该作为警告......
nb 这也可能是我的系统配置方式,但让我感到意外
说明MMM符的工作方式似乎发生了变化(至少在 Java 10 中)。例如,如果我做类似...
Calendar cal = Calendar.getInstance();
cal.set(Calendar.MONTH, Calendar.JANUARY);
cal.set(Calendar.DATE, 1);
cal.set(Calendar.YEAR, 2066);
SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy");
System.out.println(sdf.format(cal.getTime()));
它将打印01-Jan.-2066... 注意.在月底。
这可能是一个很好的机会,摆脱本质上已弃用的 API 并采用自 Java 8(或 3/10 向后移植)以来可用的新日期/时间类
因此,相反,您可以执行以下操作:
String date = "01-Jan-2006";
String hour = "00:00";
LocalDate ld = LocalDate.parse(date, DateTimeFormatter.ofPattern("dd-MMM-yyyy", Locale.UK));
LocalTime lt = LocalTime.parse(hour, DateTimeFormatter.ISO_LOCAL_TIME.localizedBy(Locale.UK));
LocalDateTime ldt = LocalDateTime.of(ld, lt);
System.out.println(ldt);
这将打印 2006-01-01T00:00
请注意,有人会指出您“不需要”进行两个单独的对话,并且您“可以”连接date/hour并一步完成,您“可以”这样做,但是由于无论如何您都将值分开了,它分开对待它们才有意义
TA贡献1864条经验 获得超2个赞
使用 Scanner 的 useLocale(Locale.US) 函数为扫描仪设置正确的区域设置。您可能正在使用十进制分隔符不是“.”的语言环境。但其他一些字符,如逗号。
添加回答
举报