【问题标题】:Java, easiest way to identify if one week away or one month etc using datesJava,最简单的方法来确定是一周后还是一个月等使用日期
【发布时间】:2017-04-14 11:42:51
【问题描述】:

经过 20 分钟的编码,我的尝试是, 如果给定 dd/mm/year 并且我有我当前的 dd/mm/year,如果 年差 = 0,月差 = 0,天差 = 7,那么你还有 1 周的时间。

然后我意识到,这并没有考虑到日期换行。例如,如果给我的日期是 2017 年 7 月 1 日,而我的当前日期是 2017 年 6 月 29 日。我的算法会返回 false,但实际上距离您不到 1 周的时间。 (也取决于月份,即 30 或 31 天)。

因此,我的问题是,检查您是否属于以下任何一种情况的最简单方法是: 1 个月、2 周或 1 周后的日期

  1. 给定日期和
  2. 我正在使用LocalDateTime.now() 给出的时间

【问题讨论】:

  • 你看过LocalDate类的documentation吗?它包含您自己找到解决方案所需的所有信息
  • 我得到了 dd/mm/year 格式的日期。但是 localDate 等总是打印实际日期,例如 4 月 4 日等,
  • @user7404408 如果要修改输出,可以使用 DateTimeFormatter (docs.oracle.com/javase/8/docs/api/java/time/format/…)

标签: java time


【解决方案1】:

以下是 7 天的示例

LocalDate old = LocalDate.of(2017, 6, 29);
LocalDate current = LocalDate.of(2017, 7, 1);

System.out.println(old.plusDays(7).isBefore(current));

old = LocalDate.of(2017, 6, 23);
System.out.println(old.plusDays(7).isBefore(current));

输出将是

false
true

【讨论】:

  • 感谢 15 个字符
【解决方案2】:

您可以使用ChronoUnit 来衡量两个日期之间的天/月/年/周

LocalDate date1 = LocalDate.of( 2017, 10, 10 );
LocalDate date2 = LocalDate.of( 2017, 11, 10 );

long years = ChronoUnit.YEARS.between( date1, date2 );
long months = ChronoUnit.MONTHS.between( date1, date2 );
long days = ChronoUnit.DAYS.between( date1, date2 );
long weeks = ChronoUnit.WEEKS.between( date1, date2 );

【讨论】:

  • 感谢 15 个字符
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-12
  • 1970-01-01
  • 1970-01-01
  • 2011-02-07
  • 2013-09-01
  • 2010-09-07
  • 1970-01-01
相关资源
最近更新 更多