Java - 获取该月的第一个星期四
Java - Get the first Thursday of the month
我正在尝试获取该月的第一个星期四
dates.forEach(date -> {
System.out.println("Date: " + date);
LocalDate dateT = date.with(firstInMonth(DayOfWeek.THURSDAY));
System.out.println("First Thursday: " + dateT);
if(date == dateT) {
System.out.println("Date: " + date + " is the first thursday");
}
System.out.println("");
});
dates 是 LocalDate 对象的哈希集,周一至周日为 7 天
他们对象可能跨越两个月(5月31日、6月1日等)
打印的输出符合预期,但从未触发 if。我有第一个星期二运行正常的确切 sae 代码 运行。
成功获取到6月的第一个星期四是2021-06-03,但是if中的打印一直没有触发
Date: 2021-05-31
First Thursday: 2021-05-06
Date: 2021-06-06
First Thursday: 2021-06-03
Date: 2021-06-05
First Thursday: 2021-06-03
Date: 2021-06-04
First Thursday: 2021-06-03
Date: 2021-06-03
First Thursday: 2021-06-03
Date: 2021-06-02
First Thursday: 2021-06-03
Date: 2021-06-01
First Thursday: 2021-06-03
==
测试两个变量是完全相同的对象。您应该使用 equals
来测试两个 不同 对象之间的 相等性 :
if (date.equals(dateT)) {
您正在尝试比较两个对象,而不是它们所持有的值。
对于 LocalDates,您可以使用 isEqual
dates.forEach(date -> {
System.out.println("Date: " + date);
LocalDate dateT = date.with(firstInMonth(DayOfWeek.THURSDAY));
System.out.println("First Thursday: " + dateT);
if(date.isEqual(dateT)) {
System.out.println("Date: " + date + " is the first thursday");
}
System.out.println("");
});
dates.forEach(date -> {
System.out.println("Date: " + date);
LocalDate dateT = date.with(firstInMonth(DayOfWeek.THURSDAY));
System.out.println("First Thursday: " + dateT);
if(date.equals(dateT)) {
System.out.println("Date: " + date + " is the first thursday");
}
System.out.println("");
});
使用 equals()
而不是 ==
,因为您比较的是对象而不是两个值。
注意:在Java中,==
运算符比较两个引用是否相同。而 equals()
方法比较两个对象。
我正在尝试获取该月的第一个星期四
dates.forEach(date -> {
System.out.println("Date: " + date);
LocalDate dateT = date.with(firstInMonth(DayOfWeek.THURSDAY));
System.out.println("First Thursday: " + dateT);
if(date == dateT) {
System.out.println("Date: " + date + " is the first thursday");
}
System.out.println("");
});
dates 是 LocalDate 对象的哈希集,周一至周日为 7 天 他们对象可能跨越两个月(5月31日、6月1日等)
打印的输出符合预期,但从未触发 if。我有第一个星期二运行正常的确切 sae 代码 运行。
成功获取到6月的第一个星期四是2021-06-03,但是if中的打印一直没有触发
Date: 2021-05-31 First Thursday: 2021-05-06 Date: 2021-06-06 First Thursday: 2021-06-03 Date: 2021-06-05 First Thursday: 2021-06-03 Date: 2021-06-04 First Thursday: 2021-06-03 Date: 2021-06-03 First Thursday: 2021-06-03 Date: 2021-06-02 First Thursday: 2021-06-03 Date: 2021-06-01 First Thursday: 2021-06-03
==
测试两个变量是完全相同的对象。您应该使用 equals
来测试两个 不同 对象之间的 相等性 :
if (date.equals(dateT)) {
您正在尝试比较两个对象,而不是它们所持有的值。
对于 LocalDates,您可以使用 isEqual
dates.forEach(date -> {
System.out.println("Date: " + date);
LocalDate dateT = date.with(firstInMonth(DayOfWeek.THURSDAY));
System.out.println("First Thursday: " + dateT);
if(date.isEqual(dateT)) {
System.out.println("Date: " + date + " is the first thursday");
}
System.out.println("");
});
dates.forEach(date -> {
System.out.println("Date: " + date);
LocalDate dateT = date.with(firstInMonth(DayOfWeek.THURSDAY));
System.out.println("First Thursday: " + dateT);
if(date.equals(dateT)) {
System.out.println("Date: " + date + " is the first thursday");
}
System.out.println("");
});
使用 equals()
而不是 ==
,因为您比较的是对象而不是两个值。
注意:在Java中,==
运算符比较两个引用是否相同。而 equals()
方法比较两个对象。