java時(shí)間段查詢將00:00:00更換成23:59:59
一.問題描述
在我們作web項(xiàng)目的時(shí)候總會(huì)有時(shí)間段的查詢條件
例如:

問題:
前端傳到后臺(tái)的時(shí)間: reportStartTime: 2023-01-01 00:00:00
reportEndTime: 2023-01-13 00:00:00
在這種時(shí)間段查詢是前端用時(shí)間組件寫出來的,但是列表的上報(bào)時(shí)間是從數(shù)據(jù)庫中讀出來的, 但是數(shù)據(jù)庫中的上報(bào)時(shí)間是
如果用sql查詢的話 2023-01-13 10:49:23 這個(gè)時(shí)間是查不到的
但是我們頁面中的上報(bào)時(shí)間是date類型的
如圖:

所以就是時(shí)間組件的最火傳過來的時(shí)間都能看到
如圖:

二.解決問題
2.1.思路一(時(shí)間戳賦值)
在出現(xiàn)這個(gè)問題后, 我曾經(jīng)想過, 將reportEndTime 用時(shí)間戳的方式給reportEndTime 重新賦值
Long endtime = reportEndTime.getTime();
//加一天減一秒
Long endTime+(1000*60*60*24-1000)
//時(shí)間戳轉(zhuǎn)dateTime
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
沒有中間new Long(timeStamp),因?yàn)樗麄兌际蔷_到毫秒的時(shí)間戳,不用再乘以1000進(jìn)行轉(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是用于表示一個(gè)日期和時(shí)間的對(duì)象(注意與java.sql.Date區(qū)分,后者用在數(shù)據(jù)庫中沒有格式化的Date),它打印出的日期可讀性差,可以使用SimpleDateFormat對(duì)時(shí)間進(jìn)行格式化,但SimpleDateFormat又是線程不安全,包括format和parse方法,而在時(shí)間的計(jì)算方面不是很方便。
2. java.util.Canlendar 可以用于獲取并設(shè)置年、月、日、時(shí)、分、秒,它和Date比,主要多了一個(gè)可以做簡單的日期和時(shí)間運(yùn)算的功能,Canlendar 變量是全局變量,會(huì)導(dǎo)致臟變量情況產(chǎn)生,并且這個(gè)共享變量沒有做線程安全控制,也就是多線程的情況下是線程不安全的。
3. Java8出的新的時(shí)間日期API都是線程安全的比如LocalDate、LocalTime、LocalDateTime這三個(gè)類,計(jì)算功能強(qiáng)大,并且性能更好,代碼更簡潔。
看小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)換功能的對(duì)象
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 是一個(gè)處理時(shí)間問題很靈活的api 有興趣的話和我一樣的初學(xué)者可以了解學(xué)習(xí)一下
2.除這兩種方法還有其他的方法嗎, 例如hutool處理時(shí)間的api DateUtil 處理時(shí)間的工具類
到此這篇關(guān)于java時(shí)間段查詢將00:00:00更換成23:59:59的文章就介紹到這了,更多相關(guān)java 00:00:00更換成23:59:59內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java實(shí)現(xiàn)仿windows 字體設(shè)置選項(xiàng)卡實(shí)例
本篇文章介紹了java仿windows 字體設(shè)置選項(xiàng)卡,可實(shí)現(xiàn)類似windows字體設(shè)置效果,需要的朋友可以參考下。2016-10-10
JavaWeb?Listener?利用Session統(tǒng)計(jì)在線人數(shù)
這篇文章主要為大家介紹了JavaWeb?Listener?利用Session統(tǒng)計(jì)在線人數(shù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
SpringBoot+Spring Security+JWT實(shí)現(xiàn)RESTful Api權(quán)限控制的方法
這篇文章主要介紹了SpringBoot+Spring Security+JWT實(shí)現(xiàn)RESTful Api權(quán)限控制的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03

