使用java.util.localdate时遇到问题

使用java.util.localdate时遇到问题,java,Java,早上好!我很难找出我试图编写的这段代码可能存在的潜在问题,以便能够将我自己的日期传递给它,并检索一些您可以在下面看到的信息。根据我的编辑器,主要问题似乎是LocalDate变量与String变量冲突,我已经尝试将其转换为String,但没有成功。无论我使用什么parse()或toString()方法,都会对代码造成更大的伤害(我在构造函数DateAnalyzer()中特别尝试了后者,在getDate()函数中尝试了前者)。我的想法是,我必须在java.util.LocalDate中工作,因此我非

早上好!我很难找出我试图编写的这段代码可能存在的潜在问题,以便能够将我自己的日期传递给它,并检索一些您可以在下面看到的信息。根据我的编辑器,主要问题似乎是
LocalDate
变量与
String
变量冲突,我已经尝试将其转换为
String
,但没有成功。无论我使用什么
parse()
toString()
方法,都会对代码造成更大的伤害(我在构造函数
DateAnalyzer()
中特别尝试了后者,在
getDate()
函数中尝试了前者)。我的想法是,我必须在
java.util.LocalDate
中工作,因此我非常感谢任何关于这个库的帮助。提前谢谢你

package fact.it.exercisedateanalyzer.model;

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.Month;

public class DateAnalyzer {
    private LocalDate date;

    public DateAnalyzer(String date) {
    }

    public int getNumberedDayOfTheYear() {
        return LocalDate.now().getDayOfYear();
    }

    public int getNumberedDayOfTheMonth() {
        return LocalDate.now().getDayOfMonth();
    }

    public DayOfWeek getDayOfWeek() {
        return LocalDate.now().getDayOfWeek();
    }

    public Month getMonth() {
        return LocalDate.now().getMonth();
    }

    public String get100DaysOld() {
        return LocalDate.now().plusDays(100).toString();
    }

    public String get10MonthsOld() {
        return LocalDate.now().plusMonths(10).toString();
    }

    public String getDate() {
        return LocalDate.parse(date.toString());
    }
}

在方法
getDate()
中,使用
LocalDate.parse
。此方法用于将字符串转换为LocalDate,而不是以其他方式。(LocalDate.parse的返回类型为LocalDate)

如果要将LocalDate变量转换为字符串,可以执行以下操作:

return date.toString(); //returns in format uuuu-MM-dd
我更喜欢使用DateTimeFormatter,在这里您可以获得您选择的格式。例如:

return DateTimeFormatter.ofPattern("uuuu-MM-dd").format(date)
有关更多模式,请参阅DateTimeFormatter的文档:

编辑:

您还需要调整构造函数来初始化DateAnalyzer中的日期变量,如下所示(使用DateTimeFormatter传递您选择的模式):

其他方式:

public DateAnalyzer(String date) {
    this.date = LocalDate.parse(date); //parses Strings in format uuuu-MM-dd
}
编辑2:


在其他方法中,您使用传递LocalDate变量的
LocalDate.now()
。如果要分析在构造函数中传递的日期,请将此事件替换为变量的名称

getDayOfWeek()
-方法的示例:

public DayOfWeek getDayOfWeek() {
    return date.getDayOfWeek();
}

感谢您的建议,它确实有帮助,现在剩下的是,当我尝试使用.getDate()方法调用print时,它在控制台中运行时会给我一个错误。IntelliJ IDEA(我的编辑器)中还有另外两个明确的警告,即“日期”参数从未使用过,也从未分配过,尽管我在主应用程序中创建了一个新的DateAnalyzer(“2001-06-18”)。请参见我的编辑。您需要在DateAnalyzer中初始化日期变量。在其他方法中,您使用传递LocalDate变量的
LocalDate.now()
。如果要分析在构造函数中传递的LocalDate,请用变量名替换此事件。@bogdanlazar请理解,这个地方不是编程学校,而是导师坐下来与您一起,从头到尾与您一起完成程序的所有部分。学习编程主要是通过自己动手。当某件事不起作用时:你试着自己去研究它。当然,带着更多的问题回来,让别人给你答案是非常方便的。但请理解,问别人应该是你的最后选择,而不是第一选择。因此,请避免通过评论进行“现在我有一个不同的问题”的乒乓球。你的问题已经得到了回答,所以也许可以接受答案,继续前进。当你遇到一个新问题时:首先彻底研究它(请放心:你可能遇到的所有基本问题……以前有人在这里或其他地方问过这个问题),然后。。。在这里写一个新问题。
public DayOfWeek getDayOfWeek() {
    return date.getDayOfWeek();
}