目录

一.问题描述

二.解决问题

2.1.思路一(时间戳赋值)

2.2思路二(LocalDateTime 方法赋值)

三.总结


一.问题描述

在我们作web项目的时候总会有时间段的查询条件

例如:

问题:

前端传到后台的时间: reportStartTime: 2023-01-01 00:00:00

                                   reportEndTime:  2023-01-13 00:00:00

在这种时间段查询是前端用时间组件写出来的,但是列表的上报时间是从数据库中读出来的, 但是数据库中的上报时间是

如果用sql查询的话 2023-01-13 10:49:23 这个时间是查不到的

但是我们页面中的上报时间是date类型的

如图:

所以就是时间组件的最火传过来的时间都能看到

如图:

二.解决问题

2.1.思路一(时间戳赋值)

在出现这个问题后, 我曾经想过, 将reportEndTime 用时间戳的方式给reportEndTime 重新赋值

Long endtime = reportEndTime.getTime();
//加一天减一秒
Long endTime+(1000*60*60*24-1000)
//时间戳转dateTime
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
没有中间new Long(timeStamp),因为他们都是精确到毫秒的时间戳,不用再乘以1000进行转换 long longTimeStamp = new Long(new Long(timeStamp) * 1000); Date date = new Date(longTimeStamp); String dareString = simpleDateFormat.format(date); return dareString;

2.2思路二(LocalDateTime 方法赋值)

LocalDateTime简介:

1. java.util.Date是用于表示一个日期和时间的对象(注意与java.sql.Date区分,后者用在数据库中没有格式化的Date),它打印出的日期可读性差,可以使用SimpleDateFormat对时间进行格式化,但SimpleDateFormat又是线程不安全,包括format和parse方法,而在时间的计算方面不是很方便。
2. java.util.Canlendar 可以用于获取并设置年、月、日、时、分、秒,它和Date比,主要多了一个可以做简单的日期和时间运算的功能,Canlendar 变量是全局变量,会导致脏变量情况产生,并且这个共享变量没有做线程安全控制,也就是多线程的情况下是线程不安全的。
3. Java8出的新的时间日期API都是线程安全的比如LocalDate、LocalTime、LocalDateTime这三个类,计算功能强大,并且性能更好,代码更简洁。

看小demo: 这里用到了plusDay(1) 加一天  minusSeconds(1) 减一秒 具体LocalDateTime方法和讲解看文章:LocalDateTime用法_localdatetime默认加三个月_遨游在知识的海洋里无法自拔的博客-CSDN博客

import java.text.ParseException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;public class DateTest {public static void main(String[] args) throws ParseException {//具有转换功能的对象DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");//设置参数String startTime = "2023-01-01 00:00:00";String endTime = "2023-01-13 00:00:00";//        //String转DateTime
//        Date starDate=new  SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(startTime);
//        Date endDate=new  SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(endTime);//        LocalDateTime startDate = LocalDateTime.parse(startTime,df);LocalDateTime endDate = LocalDateTime.parse(endTime,df);//将 endTime 加一天再减一秒LocalDateTime localDateTime = endDate.plusDays(1);//减一秒LocalDateTime endDateTime = localDateTime.minusSeconds(1);System.out.println(startTime);System.out.println(endDateTime);}
}

三.总结

1.LocalDateTime 是一个处理时间问题很灵活的api 有兴趣的话和我一样的初学者可以了解学习一下

2.除这两种方法还有其他的方法吗, 例如hutool处理时间的api  DateUtil 处理时间的工具类, 如果有其他更好的方法请在评论区分享链接, 一起讨论

时间段查询将00:00:00更换成23:59:59相关推荐

  1. 按时间检索中,开始时间为00:00:00,结束时间为23:59:59

    开发中遇到问题,按时间检索,传值为年月日,到sql就会默认为时间00:00:00,在java中可以通过字符串拼接的方式实现. publicstatic Date getStartTimeOfDate( ...

  2. SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59

    SqlDateTime 溢出.必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间 2009年10月10日 星期六 17:11 错误提示:" ...

  3. php 00截断,00截断之追本溯源

    0x00,%00,/00 之类的截断,本质都是一样的,只是不同表现方式而已. 00截断在我写这篇文章之前,一直是很模糊的概念.看到别人利用成功,等到真要使用时又手足无措.用了一些时间学习了一下原理,本 ...

  4. 【.NET】SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间

    #背景 向sqlserver数据库中一个datetime字段插入DateTime.MinValue时, 出现问题: SqlDateTime 溢出.必须介于 1/1/1753 12:00:00 AM 和 ...

  5. 实现计时、时钟,实时获取当前年月日时分秒,记录时间(获取当前的时间,开始计时,计时过程相当于你的电脑时钟)0000年00月00日 00:00:00

    <!doctype html> <html lang="en"> <head><meta charset="UTF-8" ...

  6. 获取当天时间的开始和结束 00:00:00和23:59:59

    例如:2014-07-09 00:00:00 select convert(varchar(10),getdate(),23)+' 00:00:00' 例如:2014-07-09 23:59:59 s ...

  7. 子报表修改后需要重新导入,0.00显示.00的调整方法

    水晶报表笔记:     子报表修改后需要重新导入     0.00显示.00的调整方法:数字格式的内容,右键,设置对象格式, 自定义,前导值 勾上,默认值,选择0 转载于:https://www.cn ...

  8. Android之获取到音视频的时长后按格式(00:00或者00:00:00)显示

    1 需求 我们获取到了本地视频时长(秒为单位),然后需要按照如下格式显示 没有到小时的时长如下格式 00:00 有到小时的时长如下格式 00:00:00 2 代码实现 /*** 可以显示小时*/fun ...

  9. getTime()的00:00:00问题。

    new Date("2014-01-20 00:00:00").getTime() 1390147200000 new Date("2014-01-20").g ...

最新文章

  1. linux 网络配置 阮一峰,计算机是怎样启动的? - 阮一峰的网络日志.pdf
  2. Centos7安装编译安装zabbix2.219及mariadb-5.5.46
  3. python面向对象编程的优点-Python面向对象编程 一
  4. matlab 基于GUI的PID研究
  5. 格莱泽检验matlab,计量经济学实验指导书
  6. 数字图像处理基础与应用学习,第二章
  7. 豪掷197亿美元!微软收购Siri背后的语音技术研发公司
  8. canny边缘检测算法_OpenCV4中调用HED边缘检测算法
  9. C++为什么空格无法输出_那些C/C++程序员该具备的32个编程修养习惯!
  10. html思维导图word版,[精选]思维导图(完美排版word).doc
  11. 如何批量将PNG格式转化为JPG格式
  12. 一分钟教你弄懂智能电表的峰、尖、平、谷
  13. 小米手机安装欧洲版系统(MIUI12) 详细安装教程
  14. MediaSession框架
  15. Infopath2007表单转化成word2007
  16. 从faker.js 开源作者Marak已删除了GIthub所有代码我们得到了什么教训
  17. attribute和property的区别 (转载)
  18. 《21天转型微服务实战营》 学习笔记
  19. 南信与南邮谁的计算机专业更强,南信力压南邮!关于一流本科专业!
  20. Java时间片轮转(简单模拟实现,适合初学者)

热门文章

  1. Scanner类中的nextLine()方法
  2. 用Matlab求解高等数学中的问题(不定积分,定积分,多元微积分,微分方程,级数问题)
  3. css 实现sticky 吸顶吸底效果
  4. r7 7735h参数 r7 7735h性能怎么样 r7 7735h相当于什么水平
  5. 玩转keil之hex_bin文件的生成与迁移
  6. 解读多重启动引导文件——BOOT.INI
  7. openMVS深度图计算:DenseReconstruction Estimate之EVTEstimateDepthMap之深度图初始化(patchmatch)
  8. 计算机组装大赛策划书新闻稿,关于装机大赛策划书
  9. 多元多项式除法python_python中多项式的除法
  10. (第四章)OpenGL超级宝典学习:必要的数学知识