JAVA8DateTime API

    最近在项目的业务中有统计模块,统计内容为指定月份每天的数据/指定Year每月的数据,在筛选时候需要指定开始结束时间,还需要计算指定月份有多少天,使用java.util.Calendar进行计算,java.util.Date的很多方法早就Deprecated了,所以使用了Calendar,但是在使用过程中发现编码量较大,考虑到好多架构中使用Joda-Time所以准备对其进行简单调研,但是同时JAVA8中添加的DataTime的新API,所以也进行了简单的调研,个人还是偏向于JDK提供的方法,所以如果真的在项目中引用,可能还是会考虑使用JAVA8提供的API,以下为一些简单的测试代码:

    代码包括获取当前时间,格式化,YMDHms的增减,以及java.util.Date/java.util.Calendar/java.time.LocalDateTime之间的转换,不过有点遗憾的是在ORM框架中还暂时无法直接使用新的API,但是可以通过自定义的字段来定义。

    Joda-Time简述:Joda-Time简介

    Joda-Time Github:Joda-Time Github

    JAVA8-Docs:JAVA8 Docs

// basic getter
	@Test
	public void localDateTime() {
		LocalDateTime ldt = LocalDateTime.now();
		log.info(ldt.getMonthValue() + "");
		log.info(ldt.getDayOfYear() + "");
		log.info(ldt.getDayOfWeek().getValue() + "");
	}

	// basic use
	@Test
	public void localDateTimeFmt() {
		// get instance of now
		LocalDateTime ldt = LocalDateTime.now();
		// get instance by specified field
		// LocalDateTime java.time.LocalDateTime.of(int year, int month, int dayOfMonth, int hour, int minute, int second, int nanoOfSecond)
		ldt = LocalDateTime.of(1991, 2, 11, 5, 11, 5, 11);
		// format date with standart pattern
		log.info(DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(ldt));
		// format date whih specified pattern
		log.info(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(ldt));
		// get month value
		log.info(ldt.getMonthValue() + "");
		// get DayOfYear value
		log.info(ldt.getDayOfYear() + "");
		// get DayOfWeek value
		log.info(ldt.getDayOfWeek().getValue() + "");
		// get MaxOfMonth
		log.info(ldt.range(ChronoField.DAY_OF_MONTH).getMaximum() + "");
		// adjust time with TemporalAdjusters
		log.info(TemporalAdjusters.lastDayOfMonth().adjustInto(ldt).toString());
	}

	// transfer LocalDateTime to java.util.Date
	@Test
	public void transferDate2LocalDateTime() {
		Date date = new Date();
		LocalDateTime ldt = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
		log.info(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(ldt));
	}

	// transfer LocalDateTime to java.util.Date
	@Test
	public void transferLocalDateTime2Date() {
		LocalDateTime ldt = LocalDateTime.now();
		Date date = Date.from(ldt.atZone(ZoneId.systemDefault()).toInstant());
		log.info(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date));
	}

	// LocalDateTime from Calendar
	@Test
	public void calendar() {
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.YEAR, 1991);
		calendar.set(Calendar.MONTH, Calendar.MAY);
		calendar.set(Calendar.DAY_OF_MONTH, 11);
		LocalDateTime ldt =LocalDateTime.ofInstant(calendar.toInstant(), ZoneId.systemDefault());
		log.info(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(ldt));
	}



转载于:https://my.oschina.net/geek4j/blog/552051

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值