背景
在数据查询中,我们经常需要查询某段时间内的数据,而前端传入参数一般来说是不会指定小时,分钟,秒,甚至毫秒级别的,所以就需要后端进行时间处理;例如:查询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中,通常使用的是字符串,所以一般在处理时间的函数中设定返回值为字符串类型即可;
热门文章
- springmvc获取页面值为null的原因
- 宠物粮行业分析报告范文(宠物粮食市场前景)
- 疫苗瓶子多少钱一个(疫苗瓶叫什么)
- 收狗狗的平台叫什么的简单介绍
- 「1月8日」最高速度19.7M/S,2025年V2ray/Shadowrocket/Clash/SSR每天更新免费机场订阅链接
- 海拉鲁左上角第二个神庙(海拉鲁丘陵下面神庙)
- Water 2.6.1 发布,一站式服务治理平台
- 重庆有领养宠物狗或猫的吗在哪里(重庆哪里可以领养猫猫)
- python读取hdfs上的parquet文件以及python访问hdfs HA的三种方法
- 「2月27日」最高速度19.1M/S,2025年Clash/Shadowrocket/SSR/V2ray每天更新免费机场订阅链接