-
Date util 包类讲解:
Date: 1.该类位于java.util包中,在sql包也存在。
2.父类:Object类
3.作用:描述时间
4.如何根据提供的Date类来获取时间或者设置时间
通过该类提供的构造函数及方法来实现
-
Date类:
1.实例化一个Date对象:
//获得系统的当前时间Date d = new Date();//util包System.out.println(date); // 结果为:Tue Nov 30 09:00:24 CST 2021// 默认显示的风格:国外 // 可以调用方法来显示常规时间// 2021-11-30 9:02:24System.out.println(date.toLocaleString());
2.常用的方法:
// 获取当前的年份
//系统默认减去1900,使用时要加1900 //获得指定的年份 System.out.println(date.getYear() + 1900);Date d2 = new Date();d2.setYear(2022);System.out.println(d2.getYear());
// 获取当前的月份
System.out.println(date.getMonth() + 1); //系统默认减去1,使用时要加1
// 获取当前的日
System.out.println(date.getDate()); //注意求“日”不用day而是date(getDay(): 星期数)
// 获取当前的小时
//获取当前的分钟
//获得当前的秒
//获得当前的毫秒
System.out.println(date.getHours()); System.out.println(date.getMinutes()); System.out.println(date.getSeconds());//获取当前的毫秒(距离1970年1月1日0:0:0之间的毫秒值)System.out.println(date.getTime());// 结果为long类型 // Date提供了一个可以传递毫秒值的构造函数Date d = new Date(1638234556484L);//需加个L // 2021-11-30 9:09:16System.out.println(d.toLocaleString());
//给年直接赋值
Date d2 = new Date();d2.setYear(2022);System.out.println(d2.getYear());
-
SimpleDateFormat
字符串日期的设置规则:("yyyy-MM--dd-E HH:mm:ss")
年份:yyyy 月份:MM 日:dd 小时:HH 分钟:mm 秒:ss 星期:E
//日期格式转化类 Date-->String
①实例化一个Date对象
②SimpleDateFormat创建,如下所示:
//获得系统时间直接用不用解析 Date d = new Date(); //System.out.println(a.toLocaleString());这个是老方法,不推荐因为已经过时了SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); //3.调用转换格式的方法String format = sdf.format(myDate);System.out.println(format);
//String -->Date
①定义一个字符串时间
②创建SimpleDateFormat
③抛出异常(因为该方法回出现异常,要用try。。。catch处理),如下所示:
String str = "2021-11-11 12:20:20";SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");try {Date parse = sdf.parse(str); 该方法会出现异常所以使用try解决异常才能运行程序System.out.println(parse.toLocaleString());} catch (ParseException e) {e.printStackTrace();}
-
Calendar类:日历类,替代了Date类对象中常用的方法
Calendar(注意:此类为抽象方法!不可以实例化,但可以用多态,并且只能使用类中的方法调用)
Calendar c = Calendar.getInstance();
如果之间使用sout输出的话,获得的只是一个非常长的系统时间值,不要在意
①Calendar类的方法(Calendar.DATE获得当前本地时间)月份=1,日-1
Calendar c = Calendar.getInstance();System.out.println(c.get(Calendar.YEAR));年System.out.println(c.get(Calendar.MONTH)+1);月System.out.println(c.get(Calendar.DATE));日System.out.println(c.get(Calendar.HOUR));小时System.out.println(c.get(Calendar.MINUTE));分钟System.out.println(c.get(Calendar.SECOND));秒System.out.println(c.get(Calendar.HOUR)); 12小时制的小时System.out.println(c.get(Calendar.HOUR_OF_DAY)); 24小时制的小时 systrm.out.println(c.get(Calendar.DAY_OF_DAY));星期几systrm.out.println(c.get(Calendar.DAY_OF_MONTH));本月第几天systrm.out.println(c.get(Calendar.DAY_OF_DAY));System.out.println(c.getTimeInMillis());毫秒值
②set方法 ,get方法
Calendar c = Calendar.getInstance();c.set(2000, 10-1, 20);定义中国格式需要-1,外国格式不用减1//get(获得set定义的时间,但是要-1),如下所示System.out.println(c.get(Calendar.YEAR)-1);年System.out.println(c.get(Calendar.MONTH));月
③add 方法根据第一个参数的类型 增加指定的年|月|日|....负数就是减(也就是几天前或者几天后的日期,年、月也是一样的),如下所示:
Calendar c = Calendar.getInstance(); a.add(Calendar.YEAR, -5); a.add(Calendar.MONTH, -5); a.add(Calendar.DATE, -5);System.out.println(c.get(Calendar.YEAR));
④判断是否是闰年的方法!!(GregorianCalendar类中 isLeapYear 方法)
GregorianCalendar ii= new GregorianCalendar();实例化对象 才能调用方法方法一:if(ii.isLeapYear(ye)) {返回的boolean false不是闰年 true 是闰年System.out.println("你输入的"+ye+"是闰年");}else {System.out.println("你输入的"+ye+"是平年");} 方法二: boolean a = ii.isLeapYear(year) year这个值随便填System.out.println((a==true)?"闰年":"平年");
-
Calendar 类的转换:
①Calendar类型的日期----》String类型的日期
方法一Date d = calendar.getTime();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String str = sdf.format(d);System.out.println(str);方法二long timeInMillis = calendar.getTimeInMillis();Date d = new Date(timeInMillis);SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String str = sdf.format(d);System.out.println(str);
②String类型的日期----》Calendar类型的日期
tring类型的日期----》Calendar类型的日期String da = "2021-10-10";SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");try {Date d2 = sdf2.parse(da);--此方法会报异常必须用try包起来//实例化CalendarCalendar c2 = Calendar.getInstance();c2.setTime(d2);System.out.println(c2.get(Calendar.YEAR)+"年"+(c2.get(Calendar.MONTH)+1)+"月"+c2.get(Calendar.DATE)+"日");} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}
-
求给定的两个日期的天数差:
// 6、获得给定两个日期相差的天数public static void work_06(){
// 方法一 String a = "2021-11-30";
// String b = "2021-11-22";
// SimpleDateFormat s = new SimpleDateFormat("yyyy-mm-dd");
// try {
// Date d = s.parse(a);
// Date p = s.parse(b);
// Calendar c1 = Calendar.getInstance();
// Calendar c2 = Calendar.getInstance();
// c1.setTime(d);
// c2.setTime(p);
// System.out.println("相差的天数为:"+(c1.get(Calendar.DATE)-c2.get(Calendar.DATE))+"日");
// } catch (Exception e) {
// e.printStackTrace();
// }
// System.out.println();
// } //方法二//Date myDate = new Date();myDate.setYear(2000-1900);myDate.setMonth(1-1);myDate.setDate(1);Date date = new Date();long time1 = myDate.getTime();//毫秒值long time2 = date.getTime();//毫秒值long result = time2 - time1;System.out.println(result / 1000 / 60 / 60 /24);
}