当前位置: 代码迷 >> 综合 >> java API-Date类 | SimpleDateFormat | Calendar日期类
  详细解决方案

java API-Date类 | SimpleDateFormat | Calendar日期类

热度:56   发布时间:2023-12-06 02:16:51.0
  • 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);
}

  相关解决方案