java获取给定月份和给定年份的第一个日期和最后一个日期

新手上路,请多包涵

我正在尝试获取给定月份和年份的第一个日期和最后一个日期。我使用以下代码以 yyyyMMdd 格式获取最后日期。但无法获取此格式。然后我想要相同格式的开始日期。我还在研究这个。谁能帮我修复下面的代码。

 public static java.util.Date calculateMonthEndDate(int month, int year) {
    int[] daysInAMonth = { 29, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
    int day = daysInAMonth[month];
    boolean isLeapYear = new GregorianCalendar().isLeapYear(year);

    if (isLeapYear && month == 2) {
        day++;
    }
    GregorianCalendar gc = new GregorianCalendar(year, month - 1, day);
    java.util.Date monthEndDate = new java.util.Date(gc.getTime().getTime());
    return monthEndDate;
}

public static void main(String[] args) {
    int month = 3;
    int year = 2076;
    final java.util.Date calculatedDate = calculateMonthEndDate(month, year);
    SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
    format.format(calculatedDate);
    System.out.println("Calculated month end date : " + calculatedDate);
}

原文由 user1514499 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 417
2 个回答

获取 开始日期

    GregorianCalendar gc = new GregorianCalendar(year, month-1, 1);
    java.util.Date monthEndDate = new java.util.Date(gc.getTime().getTime());
    System.out.println(monthEndDate);

注意:在 Start date day =1)

对于格式化

SimpleDateFormat format = new SimpleDateFormat(/////////add your format here);
System.out.println("Calculated month end date : " + format.format(calculatedDate));

原文由 Alya‘a Gamal 发布,翻译遵循 CC BY-SA 3.0 许可协议

java.time.YearMonth 方法 atDayatEndOfMonth

Java 8+ 中内置的 java.time 框架教程)具有用于此的命令。

恰当命名的 YearMonth 类代表一年中的一个月,没有任何特定的日期或时间。从那里我们可以要求一个月的第一天和几天。

 YearMonth yearMonth = YearMonth.of( 2015, 1 );     // 2015-01. January of 2015.
LocalDate firstOfMonth = yearMonth.atDay( 1 );     // 2015-01-01
LocalDate lastOfMonth = yearMonth.atEndOfMonth();  // 2015-01-31


关于 java.time

java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧 日期时间类,例如 java.util.DateCalendarSimpleDateFormat

现在处于 维护模式Joda-Time 项目建议迁移到 java.time 类。

要了解更多信息,请参阅 Oracle 教程。并在 Stack Overflow 中搜索许多示例和解释。规范是 JSR 310

您可以直接与数据库交换 java.time 对象。使用符合 JDBC 4.2 或更高版本的 JDBC 驱动程序。不需要字符串,不需要 java.sql.* 类。

在哪里获取 java.time 类?

ThreeTen-Extra 项目用附加类扩展了 java.time。该项目是未来可能添加到 java.time 的试验场。您可能会在这里找到一些有用的类,例如 IntervalYearWeekYearQuarter 等等

原文由 Basil Bourque 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题