这是我到目前为止用于此任务的代码:
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String d1 = sc.next();
String d2 = sc.next();
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
try {
Date date1 = formatter.parse(d1);
Date date2 = formatter.parse(d2);
long dt = (date1.getTime() - date2.getTime()) + 3600000;
long days = (dt / 86400000L);
System.out.println(days);
} catch (ParseException e) {
System.out.println("Data inválida");
e.printStackTrace();
}
}
}
但是如果我输入了一个无效的日期,比如02/29/2021
,它将转换为03/01/2021
,而不是抛出异常。
@McContone我如何更改我的格式化程序以使用LocalDate?
与Mc皇帝一样,我建议您使用Java.time(现代Java date and time API)进行日期工作。
public class Main {
private static final DateTimeFormatter FORMATTER
= DateTimeFormatter.ofPattern("dd/MM/uuuu", Locale.ROOT)
.withResolverStyle(ResolverStyle.STRICT);
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String d1 = sc.next();
String d2 = sc.next();
try {
LocalDate date1 = LocalDate.parse(d1, FORMATTER);
LocalDate date2 = LocalDate.parse(d2, FORMATTER);
long days = ChronoUnit.DAYS.between(date2, date1);
System.out.println(days);
} catch (DateTimeParseException dtpe) {
System.out.println("Data inválida");
dtpe.printStackTrace();
}
}
}
示例会话:
03/02/2021
02/29/2021
Data inválida
java.time.format.DateTimeParseException: Text '02/29/2021' could not be parsed: Invalid value for MonthOfYear (valid values 1 - 12): 29
at java.base/java.time.format.DateTimeFormatter.createError(DateTimeFormatter.java:2017)
at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1952)
at java.base/java.time.LocalDate.parse(LocalDate.java:428)
at Main.main(Main.java:18)
我在Spring API的请求体中使用LocalDateTime。 当我在请求中输入无效日期时,例如“2020-02-31 00:00:00”,它会自动转换为“2020-02-29 00:00:00”。我想在无效日期的情况下抛出异常。官方留档中提到它会转换为以前的有效日期。
问题内容: 我目前正在从事一些简单的项目,并且在以下字符串中有日期: 并希望将此字符串转换为对象。我正在使用以下代码行来做到这一点。我搜索了站点,找到了解决方法: 但是我可能做错了,因为我总是会遇到异常: 这似乎是我正在使用的模式的问题,但尝试了不同的模式,但没有任何效果。 问题答案: 某些字段(例如,星期几字段和/或AM / PM标记)可能与您的默认字段不匹配。具有方法getErrorOffse
Safari不接受我输入的时间格式,原因是什么? 我找到了解决办法;
问题内容: 在照顾了几个现有的帖子之后,我仍然无法使我的SimpleDateFormat解析器正常工作。这是代码: 我总是以ParseException结尾。这是调试消息的输出: 06-09 23:52:17.478:DEBUG / DEBUG(2436):java.text.ParseException:无法解析的日期:06-09 23:52:17.478:DEBUG / DEBUG(2436)
问题内容: 代码如下所示: 在上面的代码中,抛出不可解析的日期异常: 我不知道原因。 问题答案: 为什么要将日期转换为字符串并将其解析回日期? 代码失败的原因是因为您试图使用仅接受dd-MMM-yyy格式的日期的格式化程序转换完整日期。
我将请求映射到类,如下所示: 有人能解释为什么我在请求中的数组没有与类A中的数组映射吗?