java中取得当月最后一天的四种方法
第一种,使用Calendar的roll方法,在限制某个日期字段不改变的形式下,改变其他日期字段的值。
第二种,使用Calendar的getActualMaximum方法,获得指定日期字段的最大值。
第三种,使用Calendar的set和add方法,从下个月的第一天计算得到当前月的最后一天。
第四种,循环使用Calendar的add方法,加到本月的最后一天。
以上四种方法如下示例
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class DateTime { public static void main(String[] args) throws ParseException { DateTime dt = new DateTime(); Date date = new SimpleDateFormat("yyyy-MM-dd").parse("2008-02-14"); date = dt.lastDayOfMonth(date); System.out.println (new SimpleDateFormat("yyyy-MM-dd").format(date)); date = new SimpleDateFormat("yyyy-MM-dd").parse("2008-02-14"); date = dt.lastDayOfMonth2(date); System.out.println (new SimpleDateFormat("yyyy-MM-dd").format(date)); date = new SimpleDateFormat("yyyy-MM-dd").parse("2008-02-14"); date = dt.lastDayOfMonth3(date); System.out.println (new SimpleDateFormat("yyyy-MM-dd").format(date)); date = new SimpleDateFormat("yyyy-MM-dd").parse("2008-02-14"); date = dt.lastDayOfMonth4(date); System.out.println (new SimpleDateFormat("yyyy-MM-dd").format(date)); } public Date lastDayOfMonth(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.set(Calendar.DAY_OF_MONTH, 1); cal.roll(Calendar.DAY_OF_MONTH, -1); return cal.getTime(); } public Date lastDayOfMonth2(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); int value = cal.getActualMaximum(Calendar.DAY_OF_MONTH); cal.set(Calendar.DAY_OF_MONTH, value); return cal.getTime(); } public Date lastDayOfMonth3(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.set(Calendar.DAY_OF_MONTH, 1); cal.add(Calendar.MONTH, 1); cal.add(Calendar.DATE, -1); return cal.getTime(); } public Date lastDayOfMonth4(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); do { cal.add(Calendar.DATE, 1); } while (cal.get(Calendar.DATE) != 1); cal.add(Calendar.DATE, -1); return cal.getTime(); } } |
输入日期
2008-02-14
输出结果
2008-02-29
2008-02-29
2008-02-29
2008-02-29
分享到:
相关推荐
### Java 获取时间:本周、本年、本月的第一天与最后一天 在Java中,通过`Calendar`类可以方便地操作日期。以下将详细介绍如何利用`Calendar`类来获取本周、本年、本月的第一天和最后一天的具体实现方法。 #### ...
#### 获取当月第一天 为了获取当前月份的第一天,我们可以创建一个`Calendar`实例并将其日期字段设置为一个月的第一天,然后使用`SimpleDateFormat`将其转换为字符串格式。具体步骤如下: 1. 创建`Calendar`实例。...
我们首先将当前日期设置为当前月份的第一天,然后将当前日期加上一个月,并将日期减去一天,以获取当前月份的最后一天。最后,我们可以使用voucherDate对象来获取当前月份的最后一天的日期。 需要注意的是,我们在...
// 设置为当月第一天 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); return sdf.format(c.getTime()); } public String getLastDayOfMonth() { Calendar c = Calendar.getInstance(); c.set...
该方法用于获取指定月份的第一天日期。 ```java public static String getMonthFirstDate(Date date) { if (date == null) { date = new Date(); } Calendar c = Calendar.getInstance(); c.setTime(date); ...
2. **节气算法**:计算24节气的算法基于太阳黄经度,每年大致固定,但具体到每一天需要精确计算。24节气包括立春、雨水、惊蛰、春分、清明、谷雨、立夏、小满、芒种、夏至、小暑、大暑、立秋、处暑、白露、秋分、...
本文将详细介绍两种常用方法来获取Java中的本地系统时间:通过`Calendar`类以及通过`SimpleDateFormat`类。 #### 方法一:使用`Calendar`类 `java.util.Calendar`是Java中用来处理日期和时间的主要工具之一,它...
这个方法首先调用`getMonthBegin`获取当月的第一天,然后创建一个`Calendar`实例,并将这个日期设置为其时间。接着,通过增加一个月和减去一天(`calendar.add(Calendar.MONTH, 1);` 和 `calendar.add(Calendar.DAY...
在这个例子中,我们首先创建了一个`GregorianCalendar`实例,并设置了月份和日期以找到当月的第一个星期一。然后,我们通过计算调整到第一个星期五。接着,我们循环增加9个星期,以找到第十个星期五。最后,我们检查...
除了获取天数,还可以创建该月份的第一天和最后一天的日期对象。这在处理日期范围或者事件调度时非常有用。 6. **性能优化**: 对于大量数据处理,可以预先计算好一年所有月份的天数并存储,然后直接查询,提高...
#### 获取当月第一天 ```java public String getFirstDayOfMonth() { Calendar cal = Calendar.getInstance(); cal.set(Calendar.DAY_OF_MONTH, 1); return getNowTime("yyyy-MM-dd"); } ``` 通过将月份的第一...
- 获取指定月份的第一天(星期几)和最后一天,这可以通过`getFirstDayOfWeek()`和`getActualMaximum(DAY_OF_MONTH)`方法实现。 - 编写一个循环结构,按行打印每一天。每行打印7天,因为一周有7天。在遇到输入的...
2. **计算一年中第一周的第一天**: ```java SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, year); cal.set(Calendar.WEEK_OF_...
根据给定的文件信息,我们可以总结出以下关于Java万年历代码的相关知识点: ### 1. 项目概述 ...此外,程序还考虑到了输入月份的第一天是一周中的哪一天这一细节,使得输出结果更加符合实际情况。
- **本月第一天日期**:可以设置日历到当月的第一天。 - **本月最后一天日期**:首先找到当月的总天数,然后设置日历到那一天。 - **上个月相关日期**:通过减去一个月来获取上个月第一天和最后一天的日期。 - **下...
- 设置当前日期为指定年份和月份的第一天:`cd.set(year, month - 1, 1);` - 注意:`Calendar` 类的月份索引是从0开始的,因此实际月份需减1。 - 获取当前日期是一周中的第几天:`int week = cd.get(Calendar.DAY...
2. **设置日期为当月第一天**:使用`set(Calendar.DATE, 1)`将日期设置为当月的第一天。 3. **回滚一天得到当月最后一天**:通过`roll(Calendar.DATE, -1)`将日期回滚一天,这样就得到了上一步设定日期的前一天,即...
27. 如何获取某个日期是当月的最后一天? 可以使用Calendar类或者LocalDate类结合withDayOfMonth方法来获取。 28. 如何格式化日期? 可以使用SimpleDateFormat类或者java.time包下的DateTimeFormatter类来格式化...
这个方法首先解析传入的日期字符串得到`Date`对象,然后设置`Calendar`对象的日期为当月的第一天,并最终返回格式化后的日期字符串。 #### 示例:获取指定日期的月末 ```java public String getMonthEnd(String ...
- 使用`Calendar`类的`set`方法将日期设置为目标月份的第一天。 - 通过`get`方法获取这一天是一周中的哪一天。 ##### 4. `ShowResult(int weeknum, int year, int month)` - 根据传入的星期数字和年月,动态更新`...