java - 当月的开始和结束日期

标签 java date-manipulation

我需要 Java 中当月的开始日期和结束日期。当 JSP 页面加载当前月份时,它应该自动计算该月的开始日期和结束日期。应该与年份和月份无关。也就是说某个月有 31 天或 30 天或 28 天。这也应该满足闰年的要求。你能帮我解决这个问题吗?

例如,如果我在列表框中选择五月,我需要开始日期为 1,结束日期为 31。

最佳答案

给你:

public Pair<Date, Date> getDateRange() {
    Date begining, end;

    {
        Calendar calendar = getCalendarForNow();
        calendar.set(Calendar.DAY_OF_MONTH,
                calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
        setTimeToBeginningOfDay(calendar);
        begining = calendar.getTime();
    }

    {
        Calendar calendar = getCalendarForNow();
        calendar.set(Calendar.DAY_OF_MONTH,
                calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        setTimeToEndofDay(calendar);
        end = calendar.getTime();
    }

    return Pair.of(begining, end);
}

private static Calendar getCalendarForNow() {
    Calendar calendar = GregorianCalendar.getInstance();
    calendar.setTime(new Date());
    return calendar;
}

private static void setTimeToBeginningOfDay(Calendar calendar) {
    calendar.set(Calendar.HOUR_OF_DAY, 0);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
}

private static void setTimeToEndofDay(Calendar calendar) {
    calendar.set(Calendar.HOUR_OF_DAY, 23);
    calendar.set(Calendar.MINUTE, 59);
    calendar.set(Calendar.SECOND, 59);
    calendar.set(Calendar.MILLISECOND, 999);
}

PS:Pair类只是一对两个值。

关于java - 当月的开始和结束日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61106276/

相关文章:

java - 将图像添加到 JavaFX TableView 列中

Python datetime - 在使用 strptime 获取日、月、年之后设置固定的小时和分钟

datetime - Amazon Redshift 本月剩余工作日

sql - 在 sql server 查询中按月分组日期(存储过程)

java - String.replaceAll 方法是否有一个仅保留字母和空格的正则表达式

java - 如果 mongoDB 服务器正在运行,如何从驱动程序检查

java - 如何在java应用程序中显示unicode字符(例如中文,日文)?

linux - 用于日期操作的 Shell 脚本

php - 如何将 1970 年以来的 MS 时间设置为 MySQL 中的 Datetime(6) 字段

java - 如何在不同的屏幕尺寸和密度下保持 TextView 中的文本大小一致?