(时间)时间戳、Date和Calendar大全

目录:

  一、常用显示、运算、比较:

  二、Date类格式化显示时其它字母含义:

 

一、常用显示、运算、比较:

  /**
     * 目录:
     *    一、时间戳
     *    二、Date日期类
     *       0、Date类创建
     *       1、Date类的显示
     *       2、Date类的比较大小
     *       3、Date类的加减
     *    三、Calendar日历类
     *      0、Calendar类的创建
     *      1、Calendar类的显示
     *      2、Calendar的设置时间
     *      3、Calendar的加减
     *    四、三者转化
     *      1、时间戳和Date类转化
     *      2、时间戳和Calendar类转化
     *      3、Date类和Calendar类转化
     */
    public static void main(String[] args) {
        /**
         *  一、时间戳【1970年01月01日到当前时间的毫秒数】
         */
        System.out.println("------时间戳------");
        System.out.println("system方式当前时间戳:" + System.currentTimeMillis()); // 最快
        System.out.println("date方式当前时间戳:" + new Date().getTime()); // 对system方式的封装
        System.out.println("calendar方式当前时间戳:" + Calendar.getInstance().getTimeInMillis()); // 最慢,要对时区进行处理

        /**
         * 二、Date 日期类
         */
        System.out.println("------Date 日期类------");
        // 0、Date类的创建
        Date dateNow = new Date(); // 创建Date对象,还有Date(long time)构造方法,里面放入的是从1970年1月1日开始到现在的毫秒数
        // 1、Date类的显示
        System.out.println("未格式化日期对象:" + dateNow);
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("格式化日期对象:" + simpleDateFormat.format(dateNow)); // 具体格式可自定义
        // 2、Date类的比较大小
        // (1)Date类实现了Comparable接口,可以直接使用compareTo()方法比较大小
        Date dateOne = new Date();
        int type = dateNow.compareTo(dateOne);
        if (type == 0) {
            System.out.println("dateNow与dateOne相等!");
        } else if (type > 0){
            System.out.println("dateNow在dateOne之后!");
        } else {
            System.out.println("dateNow在dateOne之前!");
        }
        // (2)通过Date类自带的before()或者after()方法比较
        Date dateTwo = new Date();
        if (dateNow.before(dateTwo)) {
            System.out.println("dateNow在dateTwo之前!");
        } else if (dateNow.after(dateTwo)){
            System.out.println("dateNow在dateTwo之后!");
        } else {
            System.out.println("dateNow与dateTwo相等!");
        }
        // (3)调用Date类的getTime()方法获取毫秒数比较
        Date dateThree = new Date();
        if (dateNow.getTime() == dateThree.getTime()) {
            System.out.println("dateNow与dateThree相等!");
        } else if (dateNow.getTime() < dateThree.getTime()){
            System.out.println("dateNow在dateThree之前!");
        } else {
            System.out.println("dateNow在dateThree之后!");
        }
        // 3、Date的加减 (以当前时间的三天前时间为例)
        long timeNow = dateNow.getTime();
        long oneDayTime = 1000 * 60 * 60 * 24L;
        System.out.println("当前时间:" + simpleDateFormat.format(dateNow));
        Date dateNowBeforeThree = new Date(timeNow - oneDayTime * 3);
        System.out.println("三天前的时间:" + simpleDateFormat.format(dateNowBeforeThree));

        /**
         * 三、Calendar日历类
         */
        System.out.println("------Calendar 日历类------");
        // 0、Calendar类的创建
        Calendar nowCalendar = Calendar.getInstance(); // calendar是一个接口,不可以实例化,使用静态方法getinstance()创建实例
        // 1、Calendar类的显示
        System.out.println("未格式化的日历对象:" + nowCalendar);
        formatCalendar("格式化的日历对象:", nowCalendar);
        // 2、Calendar的设置时间
        Calendar myCalendar01 = Calendar.getInstance();
        // (1)构造方式设置
        // 如果想设置为某个日期,可以依次设置年月日时分秒,由于月份下标从0开始赋值月份要-1【故推荐直接使用枚举】
        myCalendar01.set(2022, Calendar.JANUARY, 1, 25, 1, 1); // 如果超过当前位置最大数,会自动进位,如25小时
        formatCalendar("构造方式设置Calendar:", myCalendar01);
        // (2)set方式设置
        Calendar myCalendar02 = Calendar.getInstance();
        myCalendar02.set(Calendar.YEAR, 2022);
        myCalendar02.set(Calendar.MONTH, Calendar.JANUARY); // 由于月份下标从0开始赋值月份要-1【故推荐直接使用枚举】
        myCalendar02.set(Calendar.DAY_OF_MONTH, 12);
        // 时分秒同理,此处省略
        formatCalendar("set方式设置Calendar:", myCalendar02);
        // 3、Calendar的加减
        // (1)使用add()方法(一天前为例)
        nowCalendar = Calendar.getInstance();
        nowCalendar.add(Calendar.DAY_OF_MONTH, -1);
        formatCalendar("Calendar的一天前:", nowCalendar);
        // (2)使用set()方法(一天前为例)
        nowCalendar = Calendar.getInstance();
        nowCalendar.set(Calendar.DAY_OF_MONTH, nowCalendar.get(Calendar.DAY_OF_MONTH) - 1);
        formatCalendar("Calendar的一天前", nowCalendar);

        /**
         * 四、三者转化
         */
        long transformTimeMillis00 = System.currentTimeMillis();
        Date transformDate00 = new Date();
        Calendar transformCalendar00 = Calendar.getInstance();
        // 1、时间戳和Date类转化
        System.out.println("1、时间戳转Date为:" + new Date(transformTimeMillis00));
        System.out.println("1、Date转时间戳为:" + transformDate00.getTime());
        // 2、时间戳和Calendar类转化
        Calendar transformCalendar11 = Calendar.getInstance();
        transformCalendar11.setTimeInMillis(transformTimeMillis00 - 1000*60*60);  // 时间戳转Calendar
        System.out.println("2、时间戳转Calendar为:" + transformCalendar11);
        System.out.println("2、Calendar转时间戳为:" + transformCalendar11.getTimeInMillis());
        // 3、Date类和Calendar类转化
        Calendar transformCalendar22 = Calendar.getInstance();
        transformCalendar22.setTime(new Date());
        System.out.println("3、Date转Calendar为:" + transformCalendar22);
        System.out.println("3、Calendar转Date为:" + transformCalendar22.getTime());
    }

    /**
     * 格式输出Calendar日历类
     * @param message 输出提示
     * @param calendar 待格式化的日历类
     */
    private static void formatCalendar(String message, Calendar calendar) {
        int myYear = calendar.get(Calendar.YEAR);
        int myMonth = calendar.get(Calendar.MONTH) + 1; // 外国的月份是 0-11,故月份需要加1
        int myDay = calendar.get(Calendar.DAY_OF_MONTH);
        int myWeekDay = calendar.get(Calendar.DAY_OF_WEEK) - 1; // 外国一周是从周日开始的,故星期需要减1,并对周日做特殊处理
        if (myWeekDay == 0) {
            myWeekDay = 7;
        }
        int myHour = calendar.get(Calendar.HOUR);
        int myMinute = calendar.get(Calendar.MINUTE);
        int mySecond = calendar.get(Calendar.SECOND);
        System.out.println(message
                + myYear + "年" + myMonth + "月" + myDay + "日" + " "
                + myHour + ":" + myMinute + ":" + mySecond + " "
                + "星期" + myWeekDay);
    }

二、Date类格式化显示时其它字母含义:

 

 

 

 

小编不易,可否来个三连,赏个赞也是好的呀!!!

 

 

 

博客参考:

简析date和calendar的用法:https://www.cnblogs.com/sw-123/p/9338624.html

java中Date日期类型的大小比较:https://blog.csdn.net/lz199719/article/details/81261336

Java中Calendar类的常用方法:https://blog.csdn.net/yx0628/article/details/79317440

 

posted @ 2022-02-09 15:21  细胞何  阅读(705)  评论(0编辑  收藏  举报