Java 时间类型(2)

由于Date类过于古老,许多的构造器和方法都已经过时。Java推荐使用Calendar来完成时间计算等操作。

PS: Calendar

是一个抽象类(Java中时间计算都要用这个类来计算)

         是一个不允许new的类(抽象类不允许new)

但是可以通过他的getInstance的方法,拿到它的createCalendar创建一下它的子实例

 

Calendar类中关于时间的属性

常量/描述

Calendar.YEAR 年份

Calendar.MONTH 月份 

Calendar.DATE 日期

Calendar.DAY_OF_MONTH 日期,和上面的字段意义完全相同

Calendar.HOUR 12小时制的小时

Calendar.HOUR_OF_DAY 24小时制的小时

Calendar.MINUTE 分钟

Calendar.SECOND 秒

Calendar.DAY_OF_WEEK 星期几

 

常用方法演示:

import java.util.Calendar;

import java.util.Date;

public static void main(String[] args) {

        //  是一个不允许new的类(抽象类不允许new)

        //  但是可以通过他的getInstance的方法,拿到它的createCalendar创建一下它的子实例

        // 使用默认时区和语言环境获得一个日历

        Calendar cal = Calendar.getInstance();//一般这样就可以拿到了

 

        System.out.println("---------获取时间----------");

        // 获取时间

        System.out.println("年:" + cal.get(Calendar.YEAR));//YEAR年

        System.out.println("月:" + (cal.get(Calendar.MONTH) + 1)); // 月是从0开始(0~11),所以需要+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));//秒

 

        System.out.println("---------设置时间----------");

        // 设置时间(有两种)

        //1、使用set一次设置

        // cal.set(year, month, date, hourOfDay, minute, second);//月是从0开始(0~11)

        cal.set(2019, 4, 4, 4, 4, 4);//只能设置到秒

//      输出结果月份是三月

        System.out.println(cal.getTime());

        //2、单个字段一一设置

        cal.set(Calendar.YEAR, 2019);

        cal.set(Calendar.MONTH, Calendar.MAY);//使用英文的十二个月的单词(单词形式)传的是常量

        cal.set(Calendar.DAY_OF_MONTH, 4);

        cal.set(Calendar.HOUR_OF_DAY, 4);

        cal.set(Calendar.MINUTE, 4);

        cal.set(Calendar.SECOND, 4);

        System.out.println(cal.getTime());

//     

        System.out.println("---------时间计算----------");

        //时间计算(也是两个方法)

        System.out.println("----add----");

        //add方法(添加。比较强大的方法)

        cal.add(Calendar.MONTH, 5);//+5个月

        System.out.println(cal.getTime());

        cal.add(Calendar.MONTH, -5);

        System.out.println(cal.getTime());

//

        System.out.println("----roll----");

        //roll方法

        cal.roll(Calendar.MONTH, 5);//+5个月

        System.out.println(cal.getTime());

        cal.roll(Calendar.MONTH, -5);

        System.out.println(cal.getTime());

//     

        //add方法会产生其他相关时间属性的连动变化(按日期时间格式进制年月等)

        //roll方法只是对相应时间属性的域内做变化

        System.out.println("----add 和 roll的区别----");

        Calendar calAdd = Calendar.getInstance();

        calAdd.add(Calendar.MONTH, 9);

        System.out.println(calAdd.getTime());

//     

        Calendar calRoll = Calendar.getInstance();

        calRoll.roll(Calendar.MONTH, 9);

        System.out.println(calRoll.getTime());

//     

        //Calendar和Date的相互转换

        System.out.println("Date和Calendar 的相互转换");

        //Calendar---> Date

        Date date1=cal.getTime();

        //Date--->Calendar

//Calendar与String之间的转换需要以Date作为中间桥梁

        Calendar cal2=Calendar.getInstance();

        cal2.setTime(date1);   

 

演示结果:

 

Java 时间类型(2)

上一篇:java.util的的Date类和Calendar类


下一篇:SELECT ... FOR UPDATE or SELECT ... FOR SHARE Locking Reads session