java.util.Calendar 时间工具类

本文通过实例演示了 Java 中 Calendar 类的基本用法,包括日期时间的获取、设置、加减操作及时间比较等。适用于初学者快速掌握 Calendar 的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    package MyTest;  
      
    /* 
     * 演示 Calendar 的一般操作 
     */  
    import java.util.Date;  
    import java.text.SimpleDateFormat;  
    import java.text.DateFormat;  
    import java.util.Calendar;  
      
    public class Test  
    {  
      public Test()  
      {  
      }  
      
      public static void main(String[] args)  
      {  
        // 字符串转换日期格式  
        // DateFormat fmtDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
        // 得到日期格式对象  
        // Date date = fmtDateTime.parse(strDateMake);  
      
        // 完整显示日期时间  
        String str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")).format(new Date());  
        System.out.println(str);  
      
        // 创建 Calendar 对象  
        Calendar calendar = Calendar.getInstance();  
        // 初始化 Calendar 对象,但并不必要,除非需要重置时间  
        calendar.setTime(new Date());  
      
        // setTime 类似上面一行  
        // Date date = new Date();  
        // calendar.setTime(date);  
      
        // 显示年份  
        int year = calendar.get(Calendar.YEAR);  
        System.out.println("YEAR is = " + String.valueOf(year));  
      
        // 显示月份 (从0开始, 实际显示要加一)  
        int MONTH = calendar.get(Calendar.MONTH);  
        System.out.println("MONTH is = " + (MONTH + 1));  
      
        // 今年的第 N 天  
        int DAY_OF_YEAR = calendar.get(Calendar.DAY_OF_YEAR);  
        System.out.println("DAY_OF_YEAR is = " + DAY_OF_YEAR);  
      
        // 本月第 N 天  
        int DAY_OF_MONTH = calendar.get(Calendar.DAY_OF_MONTH);  
        System.out.println("DAY_OF_MONTH = " + String.valueOf(DAY_OF_MONTH));  
      
        // 3小时以后  
        calendar.add(Calendar.HOUR_OF_DAY, 3);  
        int HOUR_OF_DAY = calendar.get(Calendar.HOUR_OF_DAY);  
        System.out.println("HOUR_OF_DAY + 3 = " + HOUR_OF_DAY);  
      
        // 当前分钟数  
        int MINUTE = calendar.get(Calendar.MINUTE);  
        System.out.println("MINUTE = " + MINUTE);  
      
        // 15 分钟以后  
        calendar.add(Calendar.MINUTE, 15);  
        MINUTE = calendar.get(Calendar.MINUTE);  
        System.out.println("MINUTE + 15 = " + MINUTE);  
      
        // 30分钟前  
        calendar.add(Calendar.MINUTE, -30);  
        MINUTE = calendar.get(Calendar.MINUTE);  
        System.out.println("MINUTE - 30 = " + MINUTE);  
      
        // 格式化显示  
        str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime());  
        System.out.println(str);  
      
        // 重置 Calendar 显示当前时间  
        calendar.setTime(new Date());  
        str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime());  
        System.out.println(str);  
      
        // 创建一个 Calendar 用于比较时间  
        Calendar calendarNew = Calendar.getInstance();  
      
        // 设定为 5 小时以前,后者大,显示 -1  
        calendarNew.add(Calendar.HOUR, -5);  
        System.out.println("时间比较:" + calendarNew.compareTo(calendar));  
      
        // 设定7小时以后,前者大,显示 1  
        calendarNew.add(Calendar.HOUR, +7);  
        System.out.println("时间比较:" + calendarNew.compareTo(calendar));  
      
        // 退回 2 小时,时间相同,显示 0  
        calendarNew.add(Calendar.HOUR, -2);  
        System.out.println("时间比较:" + calendarNew.compareTo(calendar));  
      }  
    }  
-----------------------------------------------------------------------------------------------------------
	/*
	 * 设置时间 参数:时-hour,分-minute,秒-second
	 */
	public Date setDate(int hour, int minute, int second) {

		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.HOUR_OF_DAY, hour);
		calendar.set(Calendar.MINUTE, minute);
		calendar.set(Calendar.SECOND, second);
		Date date = calendar.getTime(); // 第一次执行定时任务的时间

		// 如果第一次执行定时任务的时间 小于 当前的时间
		// 此时要在 第一次执行定时任务的时间 加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。
		// if (date.before(new Date())) {
		// date = this.addDay(date, 1);
		// }
		return date;
	}


package com.hexiang.utils; import java.text.SimpleDateFormat; import java.util.*; public class CalendarUtil { public static void main(String args[]) { System.out.println("First day of week is : " + new SimpleDateFormat("yyyy-MM-dd") .format(getFirstDateByWeek(new Date()))); System.out.println("Last day of week is : " + new SimpleDateFormat("yyyy-MM-dd") .format(getLastDateByWeek(new Date()))); System.out.println("First day of month is : " + new SimpleDateFormat("yyyy-MM-dd") .format(getFirstDateByMonth(new Date()))); System.out.println("Last day of month is : " + new SimpleDateFormat("yyyy-MM-dd") .format(getLastDateByMonth(new Date()))); } /** * 获得所在星期的第一天 */ public static Date getFirstDateByWeek(Date date) { Calendar now = Calendar.getInstance(); now.setTime(date); int today = now.get(Calendar.DAY_OF_WEEK); int first_day_of_week = now.get(Calendar.DATE) + 2 - today; // 星期一 now.set(Calendar.DATE, first_day_of_week); return now.getTime(); } /** * 获得所在星期的最后一天 */ public static Date getLastDateByWeek(Date date) { Calendar now = Calendar.getInstance(); now.setTime(date); int today = now.get(Calendar.DAY_OF_WEEK); int first_day_of_week = now.get(Calendar.DATE) + 2 - today; // 星期一 int last_day_of_week = first_day_of_week + 6; // 星期日 now.set(Calendar.DATE, last_day_of_week); return now.getTime(); } /** * 获得所在月份的最后一天 * @param 当前月份所在的时间 * @return 月份的最后一天 */ public static Date getLastDateByMonth(Date date) { Calendar now = Calendar.getInstance(); now.setTime(date); now.set(Calendar.MONTH, now.get(Calendar.MONTH) + 1); now.set(Calendar.DATE, 1); now.set(Calendar.DATE, now.get(Calendar.DATE) - 1); now.set(Calendar.HOUR, 11); now.set(Calendar.MINUTE, 59); now.set(Calendar.SECOND, 59); return now.getTime(); } /** * 获得所在月份的第一天 * @param 当前月份所在的时间 * @return 月份的第一天 */ public static Date getFirstDateByMonth(Date date) { Calendar now = Calendar.getInstance(); now.setTime(date); now.set(Calendar.DATE, 0); now.set(Calendar.HOUR, 12); now.set(Calendar.MINUTE, 0); now.set(Calendar.SECOND, 0); return now.getTime(); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值