LocalDateTime a = LocalDateTime.now().minusDays(-2).和LocalDateTime b = LocalDateTime.now().minusDays(2)有区别吗
时间: 2023-11-02 14:59:28 浏览: 101
这两个语句是有区别的。`LocalDateTime.now().minusDays(-2)` 表示获取当前日期时间,并往前推两天,实际上就是加上了两天的时间。而 `LocalDateTime.now().minusDays(2)` 则是获取当前日期时间,并往前推两天。所以,`a` 和 `b` 的值是不同的。
相关问题
假如今天是2022-01-01号,LocalDateTime a = LocalDateTime.now().minusDays(-2).和LocalDateTime b = LocalDateTime.now().minusDays(2)结果分别是什么
如果今天是2022-01-01号,那么执行以下代码:
```java
LocalDateTime a = LocalDateTime.now().minusDays(-2);
LocalDateTime b = LocalDateTime.now().minusDays(2);
```
`a` 和 `b` 的结果分别是:
- `a` 的结果是 2022-01-03 00:00:00。
- `b` 的结果也是 2022-01-03 00:00:00。
这是因为 `minusDays(-2)` 实际上是 `plusDays(2)`,所以两个表达式的结果是相同的。
LocalDateTime now = LocalDateTime.now(); LocalDateTime yesterday = now.minusDays(-1); 这是什么意思
### 关于 `LocalDateTime` 中 `minusDays` 方法的解析
在 Java 的 `java.time.LocalDateTime` 类中,`minusDays(long daysToSubtract)` 方法的功能是从当前日期时间对象中减去指定数量的日数并返回一个新的 `LocalDateTime` 对象[^1]。这意味着调用此方法不会修改原对象本身(因为 `LocalDateTime` 是不可变的对象),而是生成一个代表新时刻的结果实例。
当执行如下语句时:
```java
LocalDateTime now = LocalDateTime.now();
LocalDateTime result = now.minusDays(-1);
```
这里的关键点在于参数 `-1` 表示负一天,实际上等价于向未来增加一天的效果。因此,上述代码的行为相当于计算相对于变量 `now` 所指向的时间点之后的一天对应的日期时间值。
另外值得注意的是,类似的加减运算也适用于其他时间单位比如通过 `plusYears()`, `plusMonths()` 等一系列配套的方法完成更精细或者更大范围上的调整操作[^2]。
---
### 展示完整的日期提取与变换样例
下面提供了一个综合性的例子用来展示如何运用这些基本构件来进行更加复杂的逻辑构建:
```java
import java.time.*;
import java.time.temporal.ChronoUnit;
import java.util.List;
public class DateTimeDemo {
public static void main(String[] args){
// 获取当前时间
LocalDateTime now = LocalDateTime.now();
System.out.println("Current Date Time : "+now);
// 减少 -1 天 (实际上是加上一天)
LocalDateTime futureDate = now.minusDays(-1);
System.out.println("After Adding One Day Using Minus Method: "+futureDate);
// 使用 get 方法族获取具体字段信息
int year = now.getYear();
Month monthEnum = now.getMonth();
int monthNumber = now.getMonthValue();
int dayOfMonth = now.getDayOfMonth();
int dayOfYear = now.getDayOfYear();
DayOfWeek weekDay = now.getDayOfWeek();
int hour = now.getHour();
int minute = now.getMinute();
int second = now.getSecond();
int nanoOfSecond = now.getNano();
System.out.printf("""
Year:%d, Month Enum:%s(%d), Day Of Month:%d,
Day Of Year:%d, Weekday:%s,
Hour:%d, Minute:%d, Second:%d, Nano:%d%n""",
year,monthEnum,monthNumber,dayOfMonth,dayOfYear,weekDay,hour,minute,second,nanoOfSecond );
// 计算两个日期之间的差异数量
LocalDate startDate = LocalDate.of(2023, 1, 1);
LocalDate endDate = LocalDate.of(2023, 12, 31);
long betweenInDays = ChronoUnit.DAYS.between(startDate,endDate);
List<LocalDate> allDatesInRange = startDate.datesUntil(endDate.plusDays(1)).toList();
System.out.println("Total Days Between Start And End Dates:"+betweenInDays);
System.out.println("All Individual Dates In Range:");
allDatesInRange.forEach(System.out::println);
}
}
```
上面这段程序不仅示范了基础属性读取方式还包括了一些高级特性像批量生成某区间内的每一天列表等功能[^3]。
---
####
阅读全文
相关推荐















