Java 8 LocalDate-确定2月29日无年的日期?

tmn*_*tmn 6 java date jodatime java-8

我的同事和我有一个有趣的问题.我们使用只返回格式的日期数据的旧系统ddMMM.如果当天的日期/月份是过去的,那么我们假设这个日期适用于明年.否则它适用于当年.

所以今天是4/30/2015.如果系统返回记录12MAR,则该日期转换为3/12/2016.如果日期读取07MAY,则转换为5/7/2015.

但是,目前尚不清楚如何确定29FEB闰年以来的年份.我们无法在一年内实例化它而不会抛出错误.try/catch当我们试图为LocalDate今年创造一个时,我们依赖于.如果它捕获,我们认为它属于明年.

是否有更多犹太人的方式来做到这一点?

Jon*_*eet 8

  • 将值解析为a MonthDay,就像你所拥有的那样.
  • 如果月日不是 2月29日,那就照常处理
  • 如果 2月29日,你需要特殊情况:
    • 确定当前年份是否为闰年 Year.isLeap(long)
    • 如果是:
    • 如果它当前在2月29日或之前,则结果是今年2月29日
    • 如果它目前 2月29日之后,您需要申请规则 - 您可以选择明年3月1日或明年2月28日
    • 如果不是(今年的闰年)
    • 如果它目前在2月28日或之前,您需要再次申请规则,可能会在今年3月1日或2月28日返回
    • 如果它目前 2月28日之后,则日期逻辑上属于明年......
      • 如果明年是闰年,那么结果可能是明年2月29日
      • 如果明年不是闰年,那么你需要一个规则

这有希望概述您需要考虑的三个"奇怪"条件 - 我们没有足够的信息告诉您在这些条件下该做什么.