【问题标题】:Java - Get the first Thursday of the month [duplicate]Java - 获取本月的第一个星期四[重复]
【发布时间】:2021-05-21 10:28:29
【问题描述】:

我正在努力争取每月的第一个星期四

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

【问题讨论】:

标签: java if-statement java-time dayofweek localdate


【解决方案1】:
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() 方法比较两个对象。

【讨论】:

    【解决方案2】:

    您正在尝试比较两个对象,而不是它们所持有的值。

    对于 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("");
        });
    
    

    【讨论】:

      【解决方案3】:

      == 测试两个变量是否是完全相同的对象。您应该使用equals 来测试两个不同对象之间的相等性

      if (date.equals(dateT)) {
      

      【讨论】:

        猜你喜欢
        • 2014-07-21
        • 1970-01-01
        • 2019-03-09
        • 1970-01-01
        • 1970-01-01
        • 2019-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多