• Calendar类


    Calendar类的基本概念

      Calendar类的功能要比Date类强大很多,而且在实现方式上也比Date类要复杂一些。Calender类是一个抽象类,该类将所有可能用到的时间信息封装为静态成员变量,方便获取。在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance()方法创建即可。Calendar类在Java中用于处理日期。Calendar类提供了增加和减少天数、月数和年数的简便方法。它还提供了很多与日期有关的细节(这一年的哪一天。哪一周。等等)

    Calendar类的常用方法

    1.获取时间

    // 使用默认时区和语言环境获得一个日历
    Calendar cal = Calendar.getInstance();
    // 赋值时年月日时分秒常用的6个值,注意月份下标从0开始,所以取月份要+1
    System.out.println("年:" + cal.get(Calendar.YEAR));
    System.out.println("月:" + (cal.get(Calendar.MONTH) + 1)); 
    System.out.println("日:" + cal.get(Calendar.DAY_OF_MONTH));
    System.out.println("时:" + cal.get(Calendar.HOUR_OF_DAY));
    System.out.println("分:" + cal.get(Calendar.MINUTE));
    System.out.println("秒:" + cal.get(Calendar.SECOND));
    // 星期日为一周的第一天输出为 1,星期一输出为 2,以此类推
    System.out.println("一周的第几天: " + (cal.get(Calendar.DAY_OF_WEEK)-1));
    System.out.println("一月中的第几天: " + cal.get(Calendar.DAY_OF_MONTH));
    System.out.println("一年的第几天: " + cal.get(Calendar.DAY_OF_YEAR));

    2.设置时间

    月份的下标从 0 开始,设置时同样需要注意当前月份减一,比如我们设置为 12月 31 日当晚的倒计时的最后一秒: 2018-12-31 23:59:59 

       Calendar cal = Calendar.getInstance();
        // 如果想设置为某个日期,可以一次设置年月日时分秒,由于月份下标从0开始赋值月份要-1
        // cal.set(year, month, date, hourOfDay, minute, second);
        cal.set(2018, 11, 31, 23, 59, 59);
       System.out.println(cal.getTime());

    或者单个字段进行设置:

    // 6个字段分别进行设置,由于月份下标从0开始赋值月份要-1
       Calendar cal = Calendar.getInstance();
        cal.set(Calendar.YEAR, 2018);
        cal.set(Calendar.MONTH,11);
        cal.set(Calendar.DAY_OF_MONTH, 31);
        cal.set(Calendar.HOUR_OF_DAY, 23);
        cal.set(Calendar.MINUTE, 59);
        cal.set(Calendar.SECOND, 59);
        System.out.println(cal.getTime());

     时间计算

    add方法: 
    比如在12月31日当晚最后一秒,add 一秒:

    Calendar cal = Calendar.getInstance();
        System.out.println(cal.getTime());
        cal.set(2018, 11, 31, 23, 59, 59);
        cal.add(Calendar.SECOND, 1);
        System.out.println(cal.getTime());

    打印结果,日期会自动进入下一天:

    Fri Dec 07 16:18:47 CST 2018
    Tue Jan 01 00:00:00 CST 2019

    再比如 1 月 31 日时,月份减一

     Calendar cal = Calendar.getInstance();
     cal.set(2019, 0, 31, 8, 0, 0);
     System.out.println(cal.getTime());
     cal.add(Calendar.MONTH, -1);
     System.out.println(cal.getTime());

    打印结果,为12月31日

    Thu Jan 31 08:00:00 CST 2019
    Mon Dec 31 08:00:00 CST 2018

    实例1

    求出自己已经出生多少天

    1.获取当前时间对应的天数

    2.获取自己出生日期对应的天数

    3.两个时间相减(当前时间天数 – 出生日期天数)

    package Demo01;
    
    import java.util.Calendar;
    
    public class Demo02 {
        public static void main(String[] args) {
            //获取当前系统时间毫秒值
            long currenttime=System.currentTimeMillis();
            //获取当前日历类对象
            Calendar c=Calendar.getInstance();
            c.set(1994, 9,19);
            //date d=c.getTime();
            //long birth=d.getTime();
            //这两步可以简化为
            long birth=c.getTime().getTime();
            //计算时间差,(出生时毫秒值-当前毫秒值)->秒->分->时->天
            int day=(int)((currenttime-birth)/1000/60/60/24);
            System.out.println("我出生已经"+day+"天");
        }
    }

    打印结果

    我出生已经8814天

    实例2

     求出今天距离209911日还有多少小时

    1.获取当前时间对应的天数

    2.获取209911日对应的天数

    3.两个时间相减(209911日的天数 –当前时间天数)

    package Demo01;
    
    import java.util.Calendar;
    
    public class Demo02 {
        public static void main(String[] args) {
            //获取当前系统时间毫秒值
            long now=System.currentTimeMillis();
            //获取当前日历类对象
            Calendar c=Calendar.getInstance();
            c.set(2099, 0,1);
            long future=c.getTime().getTime();
            //计算时间差
            int day=(int)((future-now)/1000/60/60);
            System.out.println("距2099年一月一日还剩"+day+"小时");
        }
    }

    打印结果

    距2099年一月一日还剩701880天
  • 相关阅读:
    JAVA设计模式-设计原则
    java 8 stream特性
    使用跟踪标记查看过滤统计信息是否被使用
    找到SQL Server的序列号
    使用SSIS进行数据清洗
    找到SQL Server数据库历史增长信息
    如何查看某个查询用了多少TempDB空间
    SQL Server 2014云特性:无缝集成公有云
    SQL Server 2014新特性-原生备份加密
    强制SQL Server执行计划使用并行提升在复杂查询语句下的性能
  • 原文地址:https://www.cnblogs.com/qq1312583369/p/10082421.html
Copyright © 2020-2023  润新知