【问题标题】:How to get dates in month and days如何获取月份和日期的日期
【发布时间】:2014-11-17 07:18:17
【问题描述】:

对不起,我试过参考Similar Method的方法。但我仍然无法得到解决方案。如何获得两个不同日期之间的输出月份和日期?任何帮助将不胜感激。谢谢。

P/s : JodaTime 不适用。

到目前为止我已经尝试过。

SimpleDateFormat formatter= new SimpleDateFormat("dd-MM-yyyy");
String start       = "03-01-2015";   
String end         = "01-11-2014";

Date startdate = formatter.parse(start);
Date enddate   = formatter.parse(end);
Calendar startCalendar = new GregorianCalendar();
startCalendar.setTime(startdate);
Calendar endCalendar = new GregorianCalendar();
endCalendar.setTime(enddate);

int diffYear = endCalendar.get(Calendar.YEAR) - startCalendar.get(Calendar.YEAR);
int diffMonth = diffYear * 12 + endCalendar.get(Calendar.MONTH) -startCalendar.get(Calendar.MONTH);

【问题讨论】:

    标签: java date


    【解决方案1】:

    希望这是你想要的。

    int diffDay= endCalendar.get(Calendar.DAY_OF_MONTH) -startCalendar.get(Calendar.DAY_OF_MONTH);
    
    System.err.println("diffMonth==="+diffMonth +" Month(s) and " + diffDay + " Day(s)");
    

    【讨论】:

    • 嗨 Wissam Mhaidly.. 我从代码中发现了一些错误.. 如果日期从 2016 年 2 月 8 日到 2017 年 2 月 2 日,则 sql 结果显示:12 个月 -6 天,它假设显示 11 个月和25 天 .. 我该如何解决这个问题?
    • @user3835327 '2/8/2016 到 2/2/2017' 以上的日期将为您提供 6 个月,请注意上面代码中指定的日期格式为“dd-MM-yyyy”格式不是“MM-dd-yyyy”
    【解决方案2】:

    在 java8 中你可以这样做:

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

    (来源:http://www.leveluplunch.com/java/examples/number-of-months-between-two-dates/

    【讨论】:

      猜你喜欢
      • 2021-12-16
      • 2017-01-19
      • 1970-01-01
      • 1970-01-01
      • 2011-05-23
      • 2014-07-09
      • 1970-01-01
      • 2021-08-21
      • 2012-02-16
      相关资源
      最近更新 更多