• Calendar用法随笔


    平时在处理时间问题的时候,一般会想到用java.util.Date类型,在使用倒时间的运算的时候,就不是很方便,找找到了java.util.Calendar类,中文意思是“日历”,以下就是自己对这个类的总结了,有不足之处请指正。

    一.声明Calendar类,Calendar是一个抽象类,不能直接New一个实例,可以有两种方法得到它的实例:
    方法一:Calendar cal = new GregorianCalendar(); //GregorianCalendar是Calendar的实现类,
    方法二:Calendar cal = Calendar.getInstance();

    通过以上方法获得的实例,默认都是当前日期。验证如下:

    System.out.println("打印结果:"+(new SimpleDateFormat("yyyy-MM-dd hh-mm-ss SSSS E").format(calendar.getTime())));
    
    打印结果:2015-09-12 08:57:02 0565 星期六

    上述是使用了格式转换.

    同样,也可以直接使用Calendar对象自己的get()方法来获取具体的值:

    System.out.println("打印结果:Calendar.DAY_OF_WEEK:"+calendar.get(Calendar.DAY_OF_WEEK));//表示星期几。从星期日开始到星期六为一个周期,数字表示依次为:1,2,3……7。
    calendar.add(Calendar.MONTH, 1);//MONTH的表示是从数字0开始,所以月份应该是该数字+1.
    System.out.println("打印结果:"+ calendar.get(Calendar.YEAR)+"-"+ calendar.get(Calendar.MONTH)+"-"+ calendar.get(Calendar.DAY_OF_MONTH)+" "+ calendar.get(Calendar.HOUR_OF_DAY)+":"+ calendar.get(Calendar.MINUTE)+":"+ calendar.get(Calendar.SECOND) );
    打印结果:Calendar.DAY_OF_WEEK:7
    打印结果:2015-9-12 8:59:55

    获取方法--Calendar对象.get(类的属性);

    二:常用属性: 

     1 AM_PM                           上午/下午标志
     2 DATE                            完整日期标志
     3 DAY_OF_MONTH                       本月第几天
     4 DAY_OF_WEEK                        星期几
     5 DAY_OF_WEEK_IN_MONTH                   尚未理解)
     6 DAY_OF_YEAR                        本年度的第几天
     7 HOUR                            小时(12小时制,分上下午)
     8 HOUR_OF_DAY                        小时(24小时制,不分上下午)
     9 MILLISECOND                        微秒
    10 MINUTE                           分钟
    11 MONTH                            月份
    12 SECOND                           13 WEEK_OF_MONTH                       本月第几个星期
    14 calendar.getActualMaximum(Calendar.DAY_OF_MONTH) 一个月中最大值

    三:Calendar设定一个时间值

      方法一:setTime(Date date)

      方法二:set(int field, int value)

      方法三://使用这个方法的时候需要注意,month是需要在正常月份-1
        set(int year, int month, int date)
        set(int year, int month, int date, int hourOfDay, int minute)
        set(int year, int month, int date, int hourOfDay, int minute, int second)

      方法四:setTimeInMillis(long millis)

    四:Calendar对象的运算  

    (1)add()方法
    SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
    Calendar cal=Calendar.getInstance();
    cal.set(Calendar.YEAR, 2006);
    cal.set(Calendar.MONTH, 8);
    cal.set(Calendar.DAY_OF_MONTH, 3);
    cal.add(Calendar.DATE, -4);
    Date date=cal.getTime();
    System.out.println(df.format(date));
    cal.add(Calendar.DATE, 4);
    date=cal.getTime();
    System.out.println(df.format(date));
    输出:
        2006-08-30
        2006-09-03
    (2)roll方法
    cal.set(Calendar.YEAR, 2006);
    cal.set(Calendar.MONTH, 8);
    cal.set(Calendar.DAY_OF_MONTH, 3);
    cal.roll(Calendar.DATE, -4);
    date=cal.getTime();
    System.out.println(df.format(date));
    cal.roll(Calendar.DATE, 4);
    date=cal.getTime();
    System.out.println(df.format(date));
    输出:
        2006-09-29
        2006-09-03
    可见,roll()方法在本月内循环,一般使用add()方法;

     五.Calendar和Date的转化
      

    (1) Calendar转化为Date
        Calendar cal=Calendar.getInstance();
        Date date=cal.getTime();
    (2) Date转化为Calendar  
        Date date=new Date();
        Calendar cal=Calendar.getInstance();
        cal.setTime(date);
  • 相关阅读:
    1105 Spiral Matrix (25分)(蛇形填数)
    1104 Sum of Number Segments (20分)(long double)
    1026 Table Tennis (30分)(模拟)
    1091 Acute Stroke (30分)(bfs,连通块个数统计)
    1095 Cars on Campus (30分)(排序)
    1098 Insertion or Heap Sort (25分)(堆排序和插入排序)
    堆以及堆排序详解
    1089 Insert or Merge (25分)
    1088 Rational Arithmetic (20分)(模拟)
    1086 Tree Traversals Again (25分)(树的重构与遍历)
  • 原文地址:https://www.cnblogs.com/mytzq/p/4801546.html
Copyright © 2020-2023  润新知