博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA8DateTime API
阅读量:5825 次
发布时间:2019-06-18

本文共 2637 字,大约阅读时间需要 8 分钟。

  hot3.png

    最近在项目的业务中有统计模块,统计内容为指定月份每天的数据/指定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 Github:

    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

你可能感兴趣的文章
HCNA——RIP的路由汇总
查看>>
zabbix监控php状态(四)
查看>>
实战Django:小型CMS Part2
查看>>
原创]windows server 2012 AD架构试验系列 – 16更改DC计算机名
查看>>
统治世界的十大算法
查看>>
linux svn安装和配置
查看>>
SSH中调用另一action的方法(chain,redirect)
查看>>
数据库基础
查看>>
表格排序
查看>>
关于Android四大组件的学习总结
查看>>
java只能的round,ceil,floor方法的使用
查看>>
由于无法创建应用程序域,因此未能执行请求。错误: 0x80070002 系统找不到指定的文件...
查看>>
新开的博客,为自己祝贺一下
查看>>
【CQOI2011】放棋子
查看>>
采用JXL包进行EXCEL数据写入操作
查看>>
一周总结
查看>>
将txt文件转化为json进行操作
查看>>
线性表4 - 数据结构和算法09
查看>>
Online Patching--EBS R12.2最大的改进
查看>>
Binary Search Tree Iterator leetcode
查看>>