java处理日期和时间

一、Date

Date对象的主要方法

  • toString() 把Date对象变成字符串
  • getTime()把Date对象转换成时间戳
    @Test
	public void dateTest(){
		/**
		 * toString() 把Date对象变成字符串
			getTime()把Date对象转换成时间戳
		 */
		Date now = new Date();
		System.out.println(now);
		System.out.println(now.toString());// 把now转换成字符形式
		System.out.println(now.getTime());// 通过now获取时间戳
	}

二、SimpleDateFormat

    @Test
	public void simpleDateFormatTest(){
		try {
			Date now = new Date();
			// 把Date按照格式转换成字符串
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			System.out.println(sdf.format(now));

			// 把字符串按照格式转换成Date对象
			String s1 = "2021-08-26 12:15:35";
			Date date1 = sdf.parse(s1);
			System.out.println(date1);
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}

三、Calendar(日历)

@Test
	public void calendarTest(){
		// 创建实例
		Calendar c = Calendar.getInstance();
		int y = c.get(Calendar.YEAR);
		int m = c.get(Calendar.MONTH);// 得到的月份比实际月份小1
		int d = c.get(Calendar.DAY_OF_MONTH);
		int w = c.get(Calendar.DAY_OF_WEEK);
		int hh = c.get(Calendar.HOUR_OF_DAY);
		int mm = c.get(Calendar.MINUTE);
		int ss = c.get(Calendar.SECOND);
		int ms = c.get(Calendar.MILLISECOND);
		Date date = c.getTime();
		// 获得时间戳
		long ms1 = c.getTimeInMillis();
		System.out.println(ms1);
		
		Calendar c2 = Calendar.getInstance();
		Date now = new Date();
		c2.setTime(now);
		System.out.println(c2.getTime());
		c2.setTimeZone(TimeZone.getTimeZone("America/New_York"));
		System.out.println(c2.getTime());
		// +5 day
		c.add(Calendar.DAY_OF_MONTH, 5);
		System.out.println(c2.getTime());
		// -2 hours
		c.add(Calendar.HOUR_OF_DAY, -2);
		System.out.println(c2.getTime());
	}

四、LocalDateTime

    @Test
	public void localDateTimeTest(){
		// 当前日期
		LocalDate ld = LocalDate.now();
		// 当前时间
		LocalTime lt = LocalTime.now();
		// 当前日期和时间
		LocalDateTime ldt = LocalDateTime.now();

		// 指定日期和时间
		LocalDate ld2 = LocalDate.of(2016, 11, 30);
		LocalTime lt2 = LocalTime.of(15, 16, 17);
		LocalDateTime ldt2 = LocalDateTime.of(2016, 11, 30, 15, 16, 17);
		LocalDateTime ldt3 = LocalDateTime.of(ld2, lt2);
		
		//格式化
		DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
		System.out.println(dtf.format(LocalDateTime.now()));
		LocalDateTime dt3 = LocalDateTime.parse("2016-12-30 15:16:17", dtf);
		System.out.println(dt3);//2016-12-30T15:16:17
		
		//加减时间 plus加 minus减
		LocalDateTime now = LocalDateTime.now();
		LocalDateTime d = now.plusDays(1).minusHours(1);
		
		//计算两个日期的相差时间:Period
		LocalDate d1 = LocalDate.of(2018, 11, 20);
		LocalDate d2 = LocalDate.of(2050, 1, 2);
		Period p = d1.until(d2);
		System.out.println(p);// P31Y1M13D  
		System.out.println(p.getYears());
		System.out.println(p.getDays());
		System.out.println(p.getMonths());
		System.out.println(d1.isBefore(d2));
		// 两个日期相差多少天
		System.out.println(Math.abs(d1.toEpochDay() - d2.toEpochDay()));// 11366
		
		
		/**
		 * ZonedDateTime = LocalDateTime + ZoneId
		 * ZonedDateTime: 带时区的日期和时间
			ZoneId: 新时区对象(取代就的java.util.TimeZone)
			Instant: 时刻对象(内部用long表示epoch seconds)
		 */
		ZonedDateTime zbj = ZonedDateTime.now();// 当前时区的日期和时间
		ZonedDateTime zny = ZonedDateTime.now(ZoneId.of("America/New_York"));// 纽约时区的日期和时间
		// 北京时区变成纽约时区
		ZonedDateTime ny = zbj.withZoneSameInstant(ZoneId.of("America/New_York"));
		// 把LocalDateTime转换成ZonedDateTime
		ZonedDateTime bj = LocalDateTime.now().atZone(ZoneId.systemDefault());
		
		//Instant: 对象表示某个时刻
		Instant ins1 = Instant.now();
		Instant ins2 = ZonedDateTime.now().toInstant();
		// 注意是秒
		long epoch = ins1.getEpochSecond();
	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wwwzhouzy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值