gpt4 book ai didi

java - 如何在Java中格式化两个LocalDate变量的范围?

转载 作者:行者123 更新时间:2023-12-02 18:12:33 24 4
gpt4 key购买 nike

我熟悉 DateTime Formatter 将 LocalDate 应用于单个变量,但不知道如何处理以下情况:我有两个 LocalDate 变量,例如 startOfWeek 和 endOfWeek。我需要使用以下规则创建字符串结果:

  1. 如果 startOfWeek 和 endOfWeek 具有相同的月份和年份,结果应该是这样的2021 年 1 月 3 日至 9 日(仅提供格式示例)
  2. 如果 startOfWeek 和 endOfWeek 月份不同,结果应类似于 2021 年 10 月 31 日 - 11 月 6 日
  3. 如果 startOfWeek 和 endOfWeek 的年份不同,结果应类似于 2020 年 12 月 27 日 - 2021 年 1 月 2 日

我没有找到如何应用 DateTime Formatter 来处理另外两个 LocalDate 变量,所以我这样做了:

if ((startOfWeek.getYear() != endOfWeek.getYear())){
result.append(startOfWeek.getDayOfMonth() + " " + startOfWeek.getMonth() + " " + startOfWeek.getYear() +
" - " + endOfWeek.getDayOfMonth() + " " + endOfWeek.getMonth() + " " + startOfWeek.getYear());
return result.toString();
} else if ((startOfWeek.getMonth() != endOfWeek.getMonth())) {
result.append(startOfWeek.getDayOfMonth() + " " + startOfWeek.getMonth() +
" - " + endOfWeek.getDayOfMonth() + " " + endOfWeek.getMonth() + " " + startOfWeek.getYear());
return result.toString();
} else {
result.append(startOfWeek.getDayOfMonth() +
" - " + endOfWeek.getDayOfMonth() + " " + startOfWeek.getMonth() + " " + startOfWeek.getYear());
return result.toString();

但它以默认格式返回有关月份的信息,例如 SEPTEMBER

Full example:

现在有人如何修复月份数据格式或如何同时使用带有两个 LocalDate 变量的 DateTime Formatter 吗?预先感谢您的帮助。

最佳答案

您可以使用DateTimeFormatter来获取格式化的月份字符串

DateTimeFormatter month  = DateTimeFormatter.ofPattern("MMM");

除此之外,我还会使用 java.time 中的 3 个 DateTimeFormatter 以及 YearMonthYear 类来完成该任务 API 可以使您的 if else block 更具可读性:

import java.time.LocalDate;
import java.time.Year;
import java.time.YearMonth;
import java.time.format.DateTimeFormatter;
import java.util.List;

....


static String formattedRange (LocalDate start, LocalDate end){
DateTimeFormatter onlyDate = DateTimeFormatter.ofPattern("d");
DateTimeFormatter dateAndMonth = DateTimeFormatter.ofPattern("d MMM");
DateTimeFormatter dateMonthYear = DateTimeFormatter.ofPattern("d MMM yyyy");

StringBuilder result = new StringBuilder();
if (YearMonth.from(start).equals(YearMonth.from(end))){
result.append(onlyDate.format(start)).append(" - ")
.append(dateMonthYear.format(end));
}
else if (Year.from(start).equals(Year.from(end))){
result.append(dateAndMonth.format(start)).append(" - ")
.append(dateMonthYear.format(end));
}
else {
result.append(dateMonthYear.format(start)).append(" - ")
.append(dateMonthYear.format(end));
}
return result.toString();
}

关于java - 如何在Java中格式化两个LocalDate变量的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72080039/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com