函数iint getDayOfMonth()是获取当前日期的日,而LocalDate plusDays(int n)和LocalDate miusDays(int n)是生成当前日期之后或之前n天的日期。但为什么对当前的日期调用这两个函数并分别+1、-1,得到的却是下图中的这四个结果。
plusDays和miusDays结果返回问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
看起来你在尝试使用Java的
java.time.LocalDate
类来操作日期,并且遇到了一些预期之外的结果。让我们一步一步地分析这个问题。首先,我们来回顾一下
LocalDate plusDays(int n)
和LocalDate minusDays(int n)
方法的工作原理。这两个方法会返回一个新的LocalDate
对象,这个新对象代表的是原始日期加上或减去指定数量的天数。在处理边界情况时,比如加上或减去的天数使得日期超出了当月的最大天数,那么这些方法会自动调整到正确的月份末尾或月初。现在来看你的代码片段:
import java.time.LocalDate; public class CalendarTest { public static void main(String[] args) { LocalDate date = LocalDate.now(); System.out.println("今天是" + date.getDayOfMonth() + "号"); System.out.println(date.plusDays(daysToAdd: date.getDayOfMonth() + 1)); System.out.println(date.plusDays(daysToAdd: date.getDayOfMonth() - 1)); System.out.println(date.minusDays(daysToSubtract: date.getDayOfMonth() + 1)); System.out.println(date.minusDays(daysToSubtract: date.getDayOfMonth() - 1)); } }
问题出在你没有定义变量
daysToAdd
和daysToSubtract
,这是语法错误。你应该直接传递给plusDays()
和minusDays()
方法你需要加减的天数。修改后的代码应该是这样的:import java.time.LocalDate; public class CalendarTest { public static void main(String[] args) { LocalDate date = LocalDate.now(); System.out.println("今天是" + date.getDayOfMonth() + "号"); System.out.println(date.plusDays(date.getDayOfMonth())); System.out.println(date.minusDays(date.getDayOfMonth())); } }
运行这段修改后的代码,你会得到预期的结果。但是,如果你仍然想要得到你提到的图中的输出(即:2024-05-05, 2024-05-03, 2024-03-30, 2024-05-18),这是因为你在计算应该加减多少天时使用了当天的日期。这会导致一些意想不到的结果,特别是当输入的日期接近月底时。
为了得到你期望的结果,你应该传递1作为参数,而不是使用
getDayOfMonth()
方法获取当前日期。下面是修复后的代码:import java.time.LocalDate; public class CalendarTest { public static void main(String[] args) { LocalDate date = LocalDate.now(); System.out.println("今天是" + date.getDayOfMonth() + "号"); System.out.println(date.plusDays(1)); System.out.println(date.minusDays(1)); } }
现在,这段代码将正确地打印出当前日期后一天和前一天的日期。如果你想要更复杂的行为,比如根据当前日期的值来决定加减的天数,你需要提供一个明确的逻辑来进行计算。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥20 WPF MVVM模式 handycontrol 框架, hc:SearchBar 控件 Text="{Binding NavMenusKeyWords}" 绑定取不到值
- ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂
- ¥15 数字信号处理考试111
- ¥100 关于#audobe audition#的问题,如何解决?
- ¥15 allegro17.2生成bom表是空白的
- ¥15 请问一下怎么打通CAN通讯
- ¥20 如何在 rocky9.4 部署 CDH6.3.2?
- ¥35 navicat将excel中的数据导入mysql出错
- ¥15 rt-thread线程切换的问题
- ¥15 高通uboot 打印ubi init err 22