java.time新API 处理日期选择
来源:互联网 发布:会linux能找什么工作 编辑:程序博客网 时间:2024/06/01 18:12
近期遇到一个需求,做数据查询的时候要求,根据当前时间的今天,昨天,本周,上周,上月,今年做查询。
开始用java的Calendar类实现,的确很繁琐。
public void test(Integer select){ Date satrtTime = null; Calendar calendar = Calendar.getInstance(); Date endTime = calendar.getTime(); calendar.set(Calendar.HOUR_OF_DAY,0 ); calendar.set(Calendar.MINUTE,0 ); calendar.set(Calendar.SECOND,0 ); calendar.set(Calendar.MILLISECOND, 0); Date tmp = calendar.getTime(); switch (select){ case 1:{ satrtTime = tmp; } break; case 2:{ calendar.setTime(tmp); calendar.add(Calendar.DAY_OF_MONTH,-1); satrtTime = calendar.getTime(); } break; case 3:{ calendar.setTime(tmp); calendar.add(Calendar.DAY_OF_MONTH,-2); satrtTime = calendar.getTime(); } break; case 4:{ calendar.setTime(tmp); int week = calendar.get(Calendar.DAY_OF_WEEK); calendar.add(Calendar.DAY_OF_MONTH,-week+2); satrtTime = calendar.getTime(); } break; case 5:{ //本月 calendar.setTime(tmp); calendar.set(Calendar.DAY_OF_MONTH,1); satrtTime = calendar.getTime(); } break; case 6:{ //上月 calendar.setTime(tmp); calendar.add(Calendar.MONTH,-1); calendar.set(Calendar.DAY_OF_MONTH,1); satrtTime = calendar.getTime(); } break; case 7:{ //本年 calendar.setTime(tmp); calendar.set(Calendar.MONTH,1); calendar.set(Calendar.DAY_OF_MONTH,1); satrtTime = calendar.getTime(); } break; } System.out.println("start: "+ satrtTime +",end: " + endTime); }
查了下java8新特性,有很好用的替代API,下面是实现public void time(Integer selec){ LocalDate endTime = LocalDate.now(); LocalDateTime dateTime = null; switch (select){ case 1:{ dateTime = endTime.atStartOfDay(); } break; case 2:{ dateTime = endTime.minusDays(1).atStartOfDay(); } break; case 3:{ dateTime = endTime.minusDays(2).atStartOfDay(); } break; case 4:{ int week = endTime.getDayOfWeek().getValue(); dateTime = endTime.minusDays(week-1).atStartOfDay(); } break; case 5:{ //本月 dateTime = endTime.withDayOfMonth(1).atStartOfDay(); } break; case 6:{ //上月 dateTime = endTime.minusMonths(1).withDayOfMonth(1).atStartOfDay(); } break; case 7:{ //本年 dateTime = endTime.withMonth(1).withDayOfMonth(1).atStartOfDay(); } break; } ZoneId zone = ZoneId.systemDefault(); Instant instant = dateTime.atZone(zone).toInstant(); java.util.Date startTime = Date.from(instant); System.out.println(new Date()); System.out.println(startTime); }
JDBC
最新JDBC映射将把数据库的日期类型和Java 8的新类型关联起来:
SQL -> Java--------------------------date -> LocalDatetime -> LocalTimetimestamp -> LocalDateTime
Mybatis3.4.0以上使用新API,直接加入如下依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-typehandlers-jsr310</artifactId>
<version>1.0.1</version>
</dependency>
0 0
- java.time新API 处理日期选择
- java.time时间/日期API
- java.time时间/日期API
- Java处理日期Joda-Time
- Java 8 新特性:Java 类库的新特性之日期时间API (Date/Time API )
- Java 8 新特性:Java 类库的新特性之日期时间API (Date/Time API ) ——诺诺"涂鸦"记忆
- Java API的Date, Calendar日期处理相关类分析 选择自 blue2993 的 Blog
- Java API的Date, Calendar日期处理相关类分析 选择自 blue2993 的 Blog
- JAVA 8 新时间 API java.time 使用简介
- Java 8新特性之新的时间日期API
- java 8 新特性(5.Date-Time API)
- Java 8新的日期与时间API
- JAVA 8 新日期和时间API 学习总结
- Java 8新特性 全新的日期时间API
- W3Cschool Java 8新特性----> 日期时间 API
- JDK8日期处理API
- Android 系列 2.11使用Java 8 java.time API简化日期/时间计算
- java8__新api时间日期
- 【机器人学】机器人开源项目KDL源码学习:(2)牛顿拉普森迭代法求机器人的数值解
- 数据结构实验之栈六:下一较大值(二)
- 1002. A+B for Polynomials
- 详解Laravel依赖注入(DI)和Ioc容器
- BZOJ 2287 DP+容斥
- java.time新API 处理日期选择
- 循环链表之不敢死队问题(本质是约瑟夫环)
- task_strcut结构体
- POJ2390 Bank Interest【水题】
- 【OpenCV】10th-帧差法
- 别让CDN的回源把你的服务器拖垮,采用正确的回源策略
- 309. Best Time to Buy and Sell Stock with Cooldown
- WildFly配置MySql驱动
- informix的rowid寻址过程分析