日期操作类

一、Date java.util包

Date是用来表示时间的类,时间精确到毫秒。现在使用的时间是从1970.1.1开始的
在这里插入图片描述

1、Date类的构造方法

在这里插入图片描述

2、使用方法

具体见代码

@Test
	void  test01() {
		//日期的实例化
		//获取系统当前时间
		Date  date = new Date();
		System.out.println(date);//Tue Nov 24 15:35:27 CST 2020
		
		//获取系统从1970年到现在的毫秒值
		System.out.println(date.getTime());
		//使用系统操作类获取从1970年到现在的毫秒值
		System.out.println(System.currentTimeMillis());
		
//		//分配 Date 对象并初始化此对象,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。
//		Date  date01 = new Date(6000);
//		System.out.println(date01);//Thu Jan 01 08:00:06 CST 1970
		
		//获取信息
		//获取的是从1900年到现在的年份差
		System.out.println("获取年"+date.getYear());//获取年120
		System.out.println("获取月"+date.getMonth());//获取月10
		//获取日,0---6,星期天为0
		System.out.println("获取日"+date.getDay());//获取日2
		System.out.println("获取时间"+date.getHours());//获取时间15
		
		
		/*小例子
		 * 出发时间,返回时间
		 */
		//获取当前时间
		Date   date01 = new Date();
		Date   date02 = new Date(date01.getTime()+(24*60*60*1000*2));//两天后的时间
		System.out.println(date01);
		System.out.println(date02);
		//判断时间是否在指定时间的前面和后面
		System.out.println(date01.before(date02));//true
		System.out.println(date01.after(date01));//false
	}

二、DateFormat和SimpleDateFormat

SimpleDateFormat是DateFormat抽象类的实现类
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在之前我们输出的时间要么是国际时间,要么是毫秒时间,使用日期格式转换器,来进行输出格式转换。

1、步骤

  • 创建转换器,并设定模板,pattern
  • 使用方法转换
    将date转换为String采用的方法
    format( date date );
    在这里插入图片描述
    将String转换为date采用的方法
    parse( String sourse );
    在这里插入图片描述

2、代码演示:

@Test
	void  test02() {
		//创建转换器
		SimpleDateFormat  sdf = new SimpleDateFormat("yyyy年MM月dd--HH点mm分ss秒");
		SimpleDateFormat  sdf01 = new SimpleDateFormat("yyyy-MM-dd");
		//将date按格式输出
		//首先获取系统当前时间
		Date  date = new Date();
		//使用format将日期转换为字符串
		String  format = sdf.format(date);
		System.out.println(format);//2020年11月24--16点17分43秒
		
		//输入一个格式时间,来得到一个date
		String  dt = "2020-12-05";
		
		try {
			//使用parse方法将字符串转换为日期
			Date parse = sdf01.parse(dt);//Sat Dec 05 00:00:00 CST 2020
			System.out.println(parse);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	
	//格式转换,指定时间
	@Test
	void  test03() {
		SimpleDateFormat  sdf = new SimpleDateFormat("yyyy-MM-dd");
		//将date按格式输出
		String  dt = "2020-12-05";
		
		try {
			Date parse = sdf.parse(dt);
			System.out.println("得到的date是"+parse.getMonth());//得到的date是11
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

三、Calender

在这里插入图片描述

1、常用方法。

  • getInstance();
    在这里插入图片描述
  • get( int field);
    在这里插入图片描述
  • set( int field,int value);
    在这里插入图片描述
  • set( int year, int mouth, int date);
    在这里插入图片描述
  • set( int year , int month , int date , int hourOfDay ,int minute );
    在这里插入图片描述
  • set( int year , int month , int date , int hourOfDay ,int minute,int second );
    在这里插入图片描述
  • add( int field , int amount );
    在这里插入图片描述

2、具体的代码演示

@Test
	void  cl01(){
		//获取对象
		Calendar  calendar = Calendar.getInstance();
		//获取具体的日历属性值
		System.out.println("年---"+calendar.get(1));//年---2020
		//获取年的第二种方法
		System.out.println("年---"+calendar.get(Calendar.YEAR));//年---2020
		System.out.println("月---"+calendar.get(Calendar.MONTH));//月---10
		System.out.println("今年的第几天---"+calendar.get(Calendar.DAY_OF_YEAR));//今年的第几天---329
		System.out.println("本月的第几天---"+calendar.get(Calendar.DAY_OF_MONTH));//本月的第几天---24
		System.out.println("本周的第几天---"+calendar.get(Calendar.DAY_OF_WEEK));//本周的第几天---3
		System.out.println("时---"+calendar.get(Calendar.HOUR));//时---5
		System.out.println("分---"+calendar.get(Calendar.MINUTE));//分---5
		System.out.println("秒---"+calendar.get(Calendar.SECOND));//秒---38
	}
	
	
	@Test
	void  cl02(){
		//将Calendar转为date
		Calendar  calendar = Calendar.getInstance();
		Date time = calendar.getTime();
		System.out.println(time);//Tue Nov 24 17:07:59 CST 2020
		//重新设置
		calendar.set(Calendar.DAY_OF_MONTH, 16);
		System.out.println(calendar.getTime());//Mon Nov 16 17:10:50 CST 2020
		calendar.set(Calendar.DAY_OF_WEEK, 2);
		System.out.println(calendar.getTime());//Mon Nov 16 17:11:50 CST 2020
	}
	
	
	@Test
	void  cl03(){
		SimpleDateFormat  sdf = new SimpleDateFormat("yyyy.MM.dd");
		Scanner  sc = new Scanner(System.in);
		System.out.println("请输入一个日期");
		String  time = sc.next();
		
		//将输入的字符串保存到SimpleDateFormat中
		try {
			Date parse = sdf.parse(time);
			System.out.println(parse);
			Calendar calendar = sdf.getCalendar();
			System.out.println(calendar.getTime());
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

// 键盘输入的数据 转为  Calendar     
	@Test
	void  calen02() {
		
		SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
		Scanner input = new Scanner(System.in);
		String date=input.next();
		try {
			// 转换  
			sdf.parse(date);
			Calendar calendar = sdf.getCalendar();
			System.out.println(calendar);
			
			
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}

四、jdk1.8的日期类

4、1Year 、 YearMonth、Month

@Test
	void  test01() {
		//YearMonth
		//获取系统当前时间
		YearMonth now = YearMonth.now();
		System.out.println(now);//2020-11
		YearMonth of = YearMonth.of(2019, 5);
		System.out.println(of);//2019-05
		
		//Year
		//获取最大支持的一年
		System.out.println(Year.MAX_VALUE);//999999999
		//获取最小支持的一年
		System.out.println(Year.MIN_VALUE);//-999999999
		//获取当前的年份对象
		Year now2 = Year.now();
		//输出年份
		System.out.println(now2);//2020
		Year of2 = Year.of(2018);
		System.out.println(of2);//2018
		System.out.println(now2.isAfter(of2));//true
		
		
		//Month
		//month是月的表示对象
		//系统当前所表示的年份
		Month of3 = Month.of(11);
		//获取这个月的最大长度
		System.out.println(of3.maxLength());//30
		//获取价值年月
		System.out.println(of3.getValue());//11
		//获取三个月过后是哪一月
		Month plus = of3.plus(3);
		System.out.println(plus.getValue());//2
		System.out.println(plus.maxLength());//29
		Month[] values = Month.values();
		System.out.println(values.length);//12
		
	}

4、2本地时间

本地日期( LocalDate )、本地时间( LocalTime )、本地日期时间( LocalDateTime )

@Test
	void  test02() {
		//日期时间,只有年月日
		LocalDate  ls = LocalDate.now();
		System.out.println(ls);//2020-11-24
		
		//时间  时分秒
		LocalTime now = LocalTime.now();
		System.out.println(now);//18:51:13.991
		
		//年月日时分秒
		LocalDateTime now2 = LocalDateTime.now();
		System.out.println(now2);//2020-11-24T18:51:13.991
	}

4、3Instant时间戳

瞬时时间,在某一个时间节点上的时间

//时间戳,也称瞬时时间
	@Test
	void  test03() {
		//我们在东8区,所以时间加上8小时,就是我们的北京时间
		Instant now = Instant.now();
		System.out.println(now);//2020-11-24T10:55:28.372Z
		
		//将瞬时时间转为date
		//从1970-01-01t00:00:00z java时代得到的秒数
		long epochSecond = now.getEpochSecond();
		Calendar instance = Calendar.getInstance();
		instance.setTimeInMillis(epochSecond*1000);
		Date  time = instance.getTime();
		System.out.println(time);
		
	}

4、4时间间隔

在这里插入图片描述
代码演示如下:

// 时间间隔
	@Test
	void test04() {
		// 获取当前时间Temporal可以使用的已知实现子类
		LocalDateTime now = LocalDateTime.now();
		System.out.println(now);

		try {
			Thread.sleep(2000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		LocalDateTime end = LocalDateTime.now();
		System.out.println(end);
		// 进行比较
		Duration between = Duration.between(now, end);
		// 将此持续时间转换为毫秒内的总长度。
		System.out.println(between.toMillis());// 2002
	}

	
	// 时间间隔
	@Test
	void test05() {
		//获取当前时间Temporal可以使用的已知实现子类
        LocalDate now = LocalDate.of(2020,10,15);
        LocalDate end = LocalDate.of(2020,12,10);
        //进行比较
        Period between = Period.between(now, end);
        System.out.println(between.getDays());
	}

4、5Colck

@Test
	void test06() {
		
		Clock clock = Clock.systemDefaultZone();
		//获取时钟的当前时刻。 
		System.out.println(clock.instant());//2020-11-24T11:29:31.981Z
		
		//获取时钟的当前毫秒瞬间。
		System.out.println(clock.millis());//1606217371983
		
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值