背景
在数据查询中,我们经常需要查询某段时间内的数据,而前端传入参数一般来说是不会指定小时,分钟,秒,甚至毫秒级别的,所以就需要后端进行时间处理;例如:查询2020-02-17 - 2020-02-19 的数据;
方案1
// 返回时间格式如:2020-02-17 00:00:00publicstatic StringgetStartOfDay(Date time){ Calendar calendar= Calendar.getInstance(); calendar.setTime(time); calendar.set(Calendar.HOUR_OF_DAY,0); calendar.set(Calendar.MINUTE,0); calendar.set(Calendar.SECOND,0); calendar.set(Calendar.MILLISECOND,0);returnnewSimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime());}// 返回时间格式如:2020-02-19 23:59:59publicstatic StringgetEndOfDay(Date time){ Calendar calendar= Calendar.getInstance(); calendar.setTime(time); calendar.set(Calendar.HOUR_OF_DAY,23); calendar.set(Calendar.MINUTE,59); calendar.set(Calendar.SECOND,59); calendar.set(Calendar.MILLISECOND,999);returnnewSimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime());}// 获取30天以前的时间,同样是比较常用的publicstatic StringgetThirtyDaysAgo(Date time){ Calendar calendar= Calendar.getInstance(); calendar.setTime(time); calendar.add(calendar.DATE,-30); calendar.set(Calendar.HOUR_OF_DAY,0); calendar.set(Calendar.MINUTE,0); calendar.set(Calendar.SECOND,0); calendar.set(Calendar.MILLISECOND,0);returnnewSimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime());}
方案2
在java8中有更为简洁的代码。
// 获得某天最大时间 2020-02-19 23:59:59publicstatic DategetEndOfDay(Date date){ LocalDateTime localDateTime= LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), ZoneId.systemDefault());; LocalDateTime endOfDay= localDateTime.with(LocalTime.MAX);return Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant());}// 获得某天最小时间 2020-02-17 00:00:00publicstatic DategetStartOfDay(Date date){ LocalDateTime localDateTime= LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), ZoneId.systemDefault()); LocalDateTime startOfDay= localDateTime.with(LocalTime.MIN);return Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant());}
总结
在查询数据的sql中,通常使用的是字符串,所以一般在处理时间的函数中设定返回值为字符串类型即可;
热门文章
- 4月11日最新Free Clash Meta订阅 | 19.8M/S|2025年Shadowrocket/Clash/V2ray/SSR免费节点地址链接分享
- 动物打的疫苗是什么药名(动物用疫苗有哪些类型)
- 宠物领养市场前景如何(宠物领养平台如何盈利)
- C/C++程序的内存布局
- 动物医院儿童画 动物医院怎么画
- 4月8日最新Free Clash Meta订阅 | 21.4M/S|2025年Shadowrocket/SSR/Clash/V2ray免费节点地址链接分享
- 长沙市宠物领养(长沙哪里有宠物领养)
- HCNP Routing&Switching之MUX VLAN
- 5月3日最新Free Clash Meta订阅 | 20.2M/S|2025年Clash/V2ray/SSR/Shadowrocket免费节点地址链接分享
- pandas apply() 函数用法