gpt4 book ai didi

java - 生成日期范围 - 需要代码改进的建议

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:04:05 25 4
gpt4 key购买 nike

我正在生成两个日期之间的所有日期。

public List<Date> generateRangeDates(Date firstDate, Date lastDate) {
List<Date> allDates = new ArrayList<Date>();
Calendar calendar = new GregorianCalendar();

calendar.setTime(firstDate);

while (calendar.getTime().before(lastDate)) {
Date resultado = calendar.getTime();
allDates .add(resultado);
calendar.add(Calendar.DATE, 1);
}

Date lastDate1 = allDates .get(dates.size()-1);
Calendar cal = new GregorianCalendar();
cal.setTime(lastDate1);
cal.add(Calendar.DATE, 1);
allDates .add(cal.getTime());

for(Date date1 : dates) {
System.out.println("All Dates : "+ date1);
}

return dates;
}

以上方法生成从第一个日期到最后一个日期的所有日期。我知道它有一个很大的缺点。就像我可以使用 joda-time 而不是 java.util.Calendar。夏令时也有歧义。它也没有提到时区。还使用 GregorianCalendar,它完全忽略了当前的 Locale。- 目前 - 我不想使用 JODA API。

更新上述适用于所有时区的功能需要帮助。我在谷歌上搜索了很多,但也很困惑。

还有一个问题(听起来有点傻)-为什么人们坚持使用 JODA API?没有歧义吗?

注意 - 这些行生成最后日期并添加到 allDates 列表中。

Date lastDate1 = allDates .get(dates.size()-1);
Calendar cal = new GregorianCalendar();
cal.setTime(lastDate1);
cal.add(Calendar.DATE, 1);
allDates .add(cal.getTime());

最佳答案

有什么理由不多次使用 long 吗?如果您需要使用日期,您可以这样做。

日期与时区无关。

 public List<Date> generateRangeDates(Date firstDate, Date lastDate) {
List<Date> dates = new ArrayList<Date>();
for(long t = firstDate.getTime(); t <= lastDate.getTime(); t += 24 * 60 * 60 * 1000)
dates.add(new Date(t));
return dates;
}

您无法创建完全独立于时区的列表,因为 Java 中没有这样的数据结构。

其他人可能建议使用 JODA 的原因是它具有适当的日期(没有时间)对象,因为它完全独立于时区。

关于java - 生成日期范围 - 需要代码改进的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8963014/

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