java時間段查詢將00:00:00更換成23:59:59
一.問題描述
在我們作web項目的時候總會有時間段的查詢條件
例如:
問題:
前端傳到后臺的時間: reportStartTime: 2023-01-01 00:00:00
reportEndTime: 2023-01-13 00:00:00
在這種時間段查詢是前端用時間組件寫出來的,但是列表的上報時間是從數(shù)據(jù)庫中讀出來的, 但是數(shù)據(jù)庫中的上報時間是
如果用sql查詢的話 2023-01-13 10:49:23 這個時間是查不到的
但是我們頁面中的上報時間是date類型的
如圖:
所以就是時間組件的最火傳過來的時間都能看到
如圖:
二.解決問題
2.1.思路一(時間戳賦值)
在出現(xiàn)這個問題后, 我曾經(jīng)想過, 將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區(qū)分,后者用在數(shù)據(jù)庫中沒有格式化的Date),它打印出的日期可讀性差,可以使用SimpleDateFormat對時間進行格式化,但SimpleDateFormat又是線程不安全,包括format和parse方法,而在時間的計算方面不是很方便。
2. java.util.Canlendar 可以用于獲取并設置年、月、日、時、分、秒,它和Date比,主要多了一個可以做簡單的日期和時間運算的功能,Canlendar 變量是全局變量,會導致臟變量情況產(chǎn)生,并且這個共享變量沒有做線程安全控制,也就是多線程的情況下是線程不安全的。
3. Java8出的新的時間日期API都是線程安全的比如LocalDate、LocalTime、LocalDateTime這三個類,計算功能強大,并且性能更好,代碼更簡潔。
看小demo: 這里用到了plusDay(1) 加一天 minusSeconds(1) 減一秒 具體LocalDateTime方法和講解看文章:LocalDateTime用法
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"); //設置參數(shù) 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 處理時間的工具類
到此這篇關于java時間段查詢將00:00:00更換成23:59:59的文章就介紹到這了,更多相關java 00:00:00更換成23:59:59內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java創(chuàng)建多線程局域網(wǎng)聊天室實例
這篇文章主要介紹了Java創(chuàng)建多線程局域網(wǎng)聊天室實例,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-07-07Java 實戰(zhàn)項目基于遺傳算法學校排課系統(tǒng)的實現(xiàn)流程
讀萬卷書不如行萬里路,只學書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+Springboot+Maven+mybatis+Vue+Mysql實現(xiàn)一個基于遺傳算法的學校排課系統(tǒng),大家可以在過程中查缺補漏,提升水平2021-11-11Java類加載異常:java.lang.ClassNotFoundException解決方法
這篇文章主要給大家介紹了關于Java類加載異常:java.lang.ClassNotFoundException的解決方法,異常是Java編程語言中的一個標準異常類,它繼承自類,當在運行時嘗試加載類時,如果系統(tǒng)找不到指定的類文件就會拋出該異常,需要的朋友可以參考下2023-11-11Spring?Boot整合持久層之JdbcTemplate多數(shù)據(jù)源
持久層是JavaEE中訪問數(shù)據(jù)庫的核心操作,SpringBoot中對常見的持久層框架都提供了自動化配置,例如JdbcTemplate、JPA 等,MyBatis 的自動化配置則是MyBatis官方提供的。接下來分別向讀者介紹Spring Boot整合這持久層技術中的整合JdbcTemplate2022-08-08java使用篩選法求n以內(nèi)的素數(shù)示例(java求素數(shù))
這篇文章主要介紹了java使用篩選法求n以內(nèi)的素數(shù)示例(java求素數(shù)),需要的朋友可以參考下2014-04-04