Java常用类-----日期类

Java8之前的有Date,Calendar,SimpleDateFormat

Java8之后的有LocalDate、LocalTime、LocalDateTime

1.Date类

Date d=new Date();

long x=d.getTime()//以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数 数据类型为long

2.Calendar类

定义对象格式:Calendar c = Calendar.getInstance();

获取时间的代码如下:

System.out.println("年: " + c.get(Calendar.YEAR));
		System.out.println("月: " + c.get(Calendar.MONTH));
		System.out.println("日: " + c.get(Calendar.DAY_OF_MONTH)+1);
		System.out.println("时: " + c.get(Calendar.HOUR_OF_DAY));
		System.out.println("分: " + c.get(Calendar.MINUTE));
		System.out.println("秒: " + c.get(Calendar.SECOND));

设置时间:c.set(2021,09,09);

表示某时间之后的某一个日期:

c.add(Calendar.DAY_OF_YEAR, -30);    //某天的30天之前
c.add(Calendar.YEAR, -3);    //3年之前
System.out.println(c2.before(c));      //before表示c2之前的c
System.out.println(c2.before(c));      //after表示c2之后的c

3.SimpleDateFormat用于格式化日期格式

a.将字符串转为日期

public void stringToDate() throws ParseException {
		String str = "2021-11-11 10:10:10";
		SimpleDateFormat sdf=
				new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		
		Date date = sdf.parse(str);
		
		System.out.println(date.getTime());
	}

b.日期转化为字符串

public void dateToString() {
		Date d = new Date();
		long s =d.getTime();
		Date x = new Date(s+330000000L);
		System.out.println(x);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年-MM月-dd日 hh时:mm分:ss秒");
		System.out.println(sdf.format(x));
	}

应用:输入任意一个有效日期,打印是周几?

public void weekday() throws ParseException {
		String str ="2021/05/01";
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
		Date d = sdf.parse(str);
		
		Calendar c = Calendar.getInstance();
		c.setTime(d);
		int index = c.get(Calendar.DAY_OF_WEEK);
		System.out.println(index);
		//System.out.println(c.get(Calendar.DAY_OF_WEEK));
		String[] weeks= {"","","星期一","星期二","星期三","星期四","星期五","星期六","星期日"};
		System.out.println(weeks[index]);
	}

4.LocalDate(java8以后的)

获取当前日期:LocalDate date=LocalDate.now();

获取年月日:

public void test() {
		LocalDate d = LocalDate.now();
		System.out.println(d);
		
		System.out.println("年:" + d.getYear());
		System.out.println("月:" + d.getMonth());
		System.out.println("月:" + d.getMonthValue());
		System.out.println("日:" + d.getDayOfMonth());
		
        LocalDate date2 =LocalDate.parse("2021-09-09");     //设置时间
		
        System.out.println(d.isLeapYear());        //判断闰年
		
		LocalDate x = d.plusDays(23);     //加上23天后的日期
		System.out.println(x);
	}

日期比较:

使用compareTo()返回int类型

使用equals返回布尔类型

LocalDate和Date之间的类型转换

a.Date---->LocalDate

Date d=new Date();
LocalDate dt=d.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();//通过时区转换
System.out.println(dt);

b.LocalDate----->Date

ZoneDateTime zdt =LocalDate.now().atStartOfDay(ZoneId.systemDefault());
Date d =Date.from(zdt.toInstant());
System.out.println(d);

时间计算

java   日期插件 java 日期类型_字符串


java   日期插件 java 日期类型_字符串_02

5.Period类 表示一段时间的年、月、日

java   日期插件 java 日期类型_System_03


java   日期插件 java 日期类型_java_04

6.DateTimeFormat和SimpleDateFormat

SimpleDateFormat:线程不安全

DateTimeFormat:线程安全

java   日期插件 java 日期类型_字符串_05