java 日期计算
import java.util.Calendar; public class Main { public static void main(String[] args) { // 创建一个Calendar对象并设置为当前时间 Calendar calendar = Calendar.getInstance(); // 获取当前年份、月份和日期 int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH); int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH); // 将月份减去1(注意需要考虑到月份从0开始计数) if (month == 0) { // 如果当前月份已经是最小值了,则需要向上调整年份 year--; month = 12; } else { month--; } // 重新设置Calendar对象的年份、月份和日期 calendar.set(year, month, dayOfMonth); // 输出结果 System.out.println("倒退1个月后的日期为:" + calendar.getTime()); } }
Java 获取某月开始和结束日期的实现
1. 整体流程
为了获取某个月份的开始日期和结束日期,我们可以按照以下步骤进行操作:
获取当前日期
根据当前日期获取所需月份的第一天
根据当前日期获取所需月份的最后一天
下面我们将详细介绍每个步骤的实现方法。
2. 获取当前日期
在Java中,我们可以使用java.util.Date类和java.util.Calendar类来获取当前日期。
import java.util.Calendar; import java.util.Date; public class DateUtils { public static Date getCurrentDate() { return new Date(); } }
上述代码中,getCurrentDate方法返回一个Date对象,表示当前日期。
3. 获取月份的第一天和最后一天
为了获取某个月份的第一天和最后一天,我们需要先获取当前日期所在月份的第一天和最后一天。
import java.util.Calendar; import java.util.Date; public class DateUtils { public static Date getFirstDayOfMonth(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.DAY_OF_MONTH, 1); return calendar.getTime(); } public static Date getLastDayOfMonth(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); return calendar.getTime(); } }
上述代码中,getFirstDayOfMonth方法返回一个Date对象,表示当前日期所在月份的第一天;getLastDayOfMonth方法返回一个Date对象,表示当前日期所在月份的最后一天。
4. 完整代码
下面是整个实现的完整代码:
import java.util.Calendar; import java.util.Date; public class DateUtils { public static Date getCurrentDate() { return new Date(); } public static Date getFirstDayOfMonth(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.DAY_OF_MONTH, 1); return calendar.getTime(); } public static Date getLastDayOfMonth(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); return calendar.getTime(); } public static void main(String[] args) { Date currentDate = getCurrentDate(); Date firstDayOfMonth = getFirstDayOfMonth(currentDate); Date lastDayOfMonth = getLastDayOfMonth(currentDate); System.out.println("当前日期: " + currentDate); System.out.println("本月第一天: " + firstDayOfMonth); System.out.println("本月最后一天: " + lastDayOfMonth); } }
上述代码中的main方法演示了如何使用上述工具类来获取当前日期、当前月份的第一天和最后一天,并将结果打印输出。
-----------------------------------
package com.swift.oa; import java.text.SimpleDateFormat; import java.util.Calendar; public class APP4 { public static void main(String[] args) { // TODO Auto-generated method stub String firstDay = getFirstDay(2022,12,"yyyy-MM-dd"); String lastDay = getLastDay(2022,12,"yyyy-MM-dd"); System.out.println(firstDay); System.out.println(lastDay); } /** * 根据年月获取月初第一天日期 * @param year * @param month * @return */ public static String getFirstDay(int year,int month,String format) { Calendar cale = Calendar.getInstance(); cale.set(Calendar.YEAR,year); //赋值年份 cale.set(Calendar.MONTH, month-1);//赋值月份 int lastDay = cale.getActualMinimum(Calendar.DAY_OF_MONTH);//获取月最大天数 cale.set(Calendar.DAY_OF_MONTH, lastDay);//设置日历中月份的最大天数 SimpleDateFormat sdf = new SimpleDateFormat(format);//格式化日期yyyy-MM-dd String lastDayOfMonth = sdf.format(cale.getTime()); return lastDayOfMonth; } /** * 根据年月获取月末最后一天日期 * @param year * @param month * @return */ public static String getLastDay(int year,int month,String format) { Calendar cale = Calendar.getInstance(); cale.set(Calendar.YEAR,year);//赋值年份 cale.set(Calendar.MONTH, month-1);//赋值月份 int lastDay = cale.getActualMaximum(Calendar.DAY_OF_MONTH);//获取月最大天数 cale.set(Calendar.DAY_OF_MONTH, lastDay);//设置日历中月份的最大天数 SimpleDateFormat sdf = new SimpleDateFormat(format); //格式化日期yyyy-MM-dd String lastDayOfMonth = sdf.format(cale.getTime()); return lastDayOfMonth; } }