首页 > 解决方案 > 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());
    }
}

标签: java

解决方案


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

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

return date.toString(); //returns in format uuuu-MM-dd

我更喜欢使用 DateTimeFormatter ,您可以在其中获得您选择的格式。例子:

return DateTimeFormatter.ofPattern("uuuu-MM-dd").format(date)

有关更多模式,请查看 DateTimeFormatter 的文档:https ://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#patterns

编辑:

您还需要调整构造函数以像这样初始化 DateAnalyzer 中的日期变量(使用 DateTimeFormatter 传递您选择的模式):

public DateAnalyzer(String date) {
    this.date = LocalDate.parse(date, DateTimeFormatter.ofPattern("uuuu-MM-dd"));
}

另一种方式:

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

编辑2:

在您使用的其他方法中,LocalDate.now()它提供了一个 LocalDate 变量。如果你想分析你在构造函数中传递的日期,用你的变量名替换这个出现的日期。

您的 - 方法示例getDayOfWeek()

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

推荐阅读