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)
//時間戳轉(zhuǎn)dateTime
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
沒有中間new Long(timeStamp),因為他們都是精確到毫秒的時間戳,不用再乘以1000進行轉(zhuǎn)換 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 可以用于獲取并設(shè)置年、月、日、時、分、秒,它和Date比,主要多了一個可以做簡單的日期和時間運算的功能,Canlendar 變量是全局變量,會導(dǎo)致臟變量情況產(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 {
//具有轉(zhuǎn)換功能的對象
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
//設(shè)置參數(shù)
String startTime = "2023-01-01 00:00:00";
String endTime = "2023-01-13 00:00:00";
// //String轉(zhuǎn)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);
}
}三.總結(jié)
1.LocalDateTime 是一個處理時間問題很靈活的api 有興趣的話和我一樣的初學(xué)者可以了解學(xué)習(xí)一下
2.除這兩種方法還有其他的方法嗎, 例如hutool處理時間的api DateUtil 處理時間的工具類
到此這篇關(guān)于java時間段查詢將00:00:00更換成23:59:59的文章就介紹到這了,更多相關(guān)java 00:00:00更換成23:59:59內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java創(chuàng)建多線程局域網(wǎng)聊天室實例
這篇文章主要介紹了Java創(chuàng)建多線程局域網(wǎng)聊天室實例,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-07-07
Java 實戰(zhàn)項目基于遺傳算法學(xué)校排課系統(tǒng)的實現(xiàn)流程
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+Springboot+Maven+mybatis+Vue+Mysql實現(xiàn)一個基于遺傳算法的學(xué)校排課系統(tǒng),大家可以在過程中查缺補漏,提升水平2021-11-11
詳解Spring AOP自定義可重復(fù)注解沒有生效問題
本文主要介紹了Spring AOP自定義可重復(fù)注解沒有生效問題,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08
Java類加載異常:java.lang.ClassNotFoundException解決方法
這篇文章主要給大家介紹了關(guān)于Java類加載異常:java.lang.ClassNotFoundException的解決方法,異常是Java編程語言中的一個標(biāo)準(zhǔn)異常類,它繼承自類,當(dāng)在運行時嘗試加載類時,如果系統(tǒng)找不到指定的類文件就會拋出該異常,需要的朋友可以參考下2023-11-11
Spring?Boot整合持久層之JdbcTemplate多數(shù)據(jù)源
持久層是JavaEE中訪問數(shù)據(jù)庫的核心操作,SpringBoot中對常見的持久層框架都提供了自動化配置,例如JdbcTemplate、JPA 等,MyBatis 的自動化配置則是MyBatis官方提供的。接下來分別向讀者介紹Spring Boot整合這持久層技術(shù)中的整合JdbcTemplate2022-08-08
java使用篩選法求n以內(nèi)的素數(shù)示例(java求素數(shù))
這篇文章主要介紹了java使用篩選法求n以內(nèi)的素數(shù)示例(java求素數(shù)),需要的朋友可以參考下2014-04-04

