【问题标题】:Java : Given date is within 12 months or not [closed]Java:给定日期是否在 12 个月内 [关闭]
【发布时间】:2014-10-14 08:31:16
【问题描述】:

我有一个"07-AUG-13" 形式的日期字符串。

我想知道给定的日期是否在当前日期的某个时间段内。

bool 
isItWithin(int period){
    //check if "07-AUG-13" is within a "period" months from now
}

【问题讨论】:

  • 你有什么努力吗?
  • 到目前为止你有没有尝试过?
  • 提示:使用java.util.Calendar 来执行此操作。
  • 我在网上有很多方法,但很困惑。人们使用过 joda、util.calender 等。你能帮我使用 util.Calender
  • 或其他提示,您可以考虑以毫秒为单位的日期并对其进行算术运算以找出其是否在 3/6/9 个月的范围内。

标签: java date datetime


【解决方案1】:

使用Calendar 类:

  public static boolean isWithinMonths(Date startDate, Date endDate, int months) {
    Calendar startCalendar = Calendar.getInstance();
    startCalendar.setTime(startDate);
    Calendar endCalendar = Calendar.getInstance();
    endCalendar.setTime(endDate);

    startCalendar.add(Calendar.MONTH, months);

    return startCalendar.before(endCalendar);
  }

【讨论】:

    【解决方案2】:

    如果您使用 Java 8,请使用新的时间 api。

    LocalDate startDate = LocalDate.of(2004, Month.JANUARY, 1);
    LocalDate endDate = LocalDate.of(2005, Month.JANUARY, 1);
    
    long monthsInYear2 = ChronoUnit.MONTHS.between(startDate, endDate);
    

    【讨论】:

    • @vjs 我想你会发现它来自 java 8,但你也可以使用 JodaTime
    • 是的,您可以使用 JodaTime jar,它具有与上述类似的功能。 Java 8 采用了与 JodaTime 一样的日期管理。
    • 将此问题标记为与 Java 日期月差重复
    【解决方案3】:

    我建议你使用 [Joda Time Library] 而不是 JDK

    或者你可以试试这个东西:

    long diff = date1.getTime() - date2.getTime();
    long monthDiff=Math.ceil((diff / (60 * 60 * 24)));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-26
      • 2022-11-08
      • 1970-01-01
      • 2013-02-03
      • 2021-08-12
      • 1970-01-01
      • 2020-01-30
      • 1970-01-01
      相关资源
      最近更新 更多