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