Java判斷一個(gè)時(shí)間是否在當(dāng)前時(shí)間區(qū)間代碼示例
前言:
我現(xiàn)有個(gè)定時(shí)任務(wù) 每天上午10下午4點(diǎn)查一次表有沒(méi)有錄入新數(shù)據(jù)進(jìn)來(lái) 有時(shí)候錄半天就沒(méi)錄入了 所以還得知道他是不是新數(shù)據(jù) 得知道這條數(shù)據(jù)的時(shí)間在沒(méi)在當(dāng)前時(shí)間左右范圍內(nèi) 在的話就還在正常錄入 。
1.所需條件
你得確保有三時(shí)間作為條件 區(qū)間數(shù)據(jù) (就是我們最新查到的數(shù)據(jù)的最新時(shí)間), 當(dāng)前時(shí)間的前一個(gè)小時(shí)時(shí)間, 當(dāng)前時(shí)間。(這個(gè)區(qū)間數(shù)據(jù)時(shí)間是我來(lái)測(cè)試的 你們得查最新數(shù)據(jù)的時(shí)間)
SQL如下:
含義如下:
SELECT date_sub(now(), interval 1 huor); //就是當(dāng)前時(shí)間的前的一小時(shí)間 //(date:時(shí)間 sub 減去 interval:間隔 hour :小時(shí)) //這里我設(shè)置的一個(gè)小時(shí) 你們也可以設(shè)置長(zhǎng)一點(diǎn)都可以 SELECT SYSDATE(); //查詢系統(tǒng)當(dāng)前時(shí)間 (就是你電腦時(shí)間)
2.將這三個(gè)進(jìn)行轉(zhuǎn)換類型
3.做條件判斷
- (當(dāng)前時(shí)間的前一個(gè)小時(shí)作為) 開(kāi)始時(shí)間
- (我們的新數(shù)據(jù)時(shí)間作為) 區(qū)間時(shí)間
- (當(dāng)前時(shí)間作為) 結(jié)束時(shí)間
將這個(gè)三個(gè)都setTime一下之后,
進(jìn)行判斷 意思就是你查的這個(gè)區(qū)間數(shù)據(jù) 有沒(méi)有在開(kāi)始時(shí)間 和 結(jié)束時(shí)間 之間 是的話就會(huì)進(jìn) 在區(qū)間里!!!
可以看到最新數(shù)據(jù)時(shí)間在 開(kāi)始時(shí)間 和 結(jié)束時(shí)間 之間 所以他是最新錄入進(jìn)來(lái)的數(shù)據(jù)。
4.整體代碼
@Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { taskRegistrar.addTriggerTask( //1.添加任務(wù)內(nèi)容(Runnable) () -> System.out.println("執(zhí)行動(dòng)態(tài)定時(shí)任務(wù): " + LocalDateTime.now().toLocalTime()), //2.設(shè)置執(zhí)行周期(Trigger) triggerContext -> { //2.1 從數(shù)據(jù)庫(kù)獲取執(zhí)行周期 String cron = aitravelCheckInfoService.selectCron(); System.out.println(cron); String cs = "2023-03-14 01:30:00";//區(qū)間數(shù)據(jù)時(shí)間 System.out.println(cs); String kaishi = aitravelCheckInfoService.kaishi();//當(dāng)前時(shí)間的前一個(gè)小時(shí) System.out.println(kaishi); String dangqian = aitravelCheckInfoService.dangqian();//當(dāng)前時(shí)間 System.out.println(dangqian); String zong = aitravelCheckInfoService.zong(); System.out.println(zong); int i = Integer.parseInt(zong); if (i==0){ HttpServletResponse response = null; this.sendCaptcha(response, "19176928269"); }else{ //String轉(zhuǎn)Date try { SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date wcha =ft.parse(cs);//區(qū)間數(shù)據(jù)時(shí)間(String 轉(zhuǎn) Date) System.out.println(wcha); Date kaishi1 =ft.parse(kaishi);//當(dāng)前時(shí)間往前推一個(gè)小時(shí)(String 轉(zhuǎn) Date) System.out.println(kaishi1); Date dangqian1 =ft.parse(dangqian);//當(dāng)前時(shí)間(String 轉(zhuǎn) Date) System.out.println(dangqian1); Calendar dateC = Calendar.getInstance(); dateC.setTime(wcha);//區(qū)間數(shù)據(jù)時(shí)間 System.out.println(dateC); Calendar begin = Calendar.getInstance(); begin.setTime(kaishi1);//開(kāi)始時(shí)間 Calendar end = Calendar.getInstance(); end.setTime(dangqian1);//結(jié)束時(shí)間 if (dateC.after(begin) && dateC.before(end)) { System.out.println("在區(qū)間里"); }else{ System.out.println("不在區(qū)間里"); HttpServletResponse response = null; this.sendCaptcha(response, "19176928269"); } } catch (ParseException e) { e.printStackTrace(); } } //2.3 返回執(zhí)行周期(Date) return new CronTrigger(cron).nextExecutionTime(triggerContext); } ); }
最后希望能幫助到你。
總結(jié)
到此這篇關(guān)于Java判斷一個(gè)時(shí)間是否在當(dāng)前時(shí)間區(qū)間的文章就介紹到這了,更多相關(guān)Java判斷時(shí)間在時(shí)間區(qū)間內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JDK SPI機(jī)制以及自定義SPI類加載問(wèn)題
這篇文章主要介紹了JDK SPI機(jī)制以及自定義SPI類加載問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11基于Spring Boot不同的環(huán)境使用不同的配置方法
下面小編就為大家分享一篇基于Spring Boot不同的環(huán)境使用不同的配置方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01詳解Java如何在業(yè)務(wù)代碼中優(yōu)雅的使用策略模式
這篇文章主要為大家介紹了Java如何在業(yè)務(wù)代碼中優(yōu)雅的使用策略模式,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的可以了解下2023-08-08SpringBoot預(yù)防XSS攻擊的實(shí)現(xiàn)
XSS攻擊是一種在web應(yīng)用中的計(jì)算機(jī)安全漏洞,它允許惡意web用戶將代碼植入到提供給其它用戶使用的頁(yè)面,本文主要介紹了SpringBoot預(yù)防XSS攻擊的實(shí)現(xiàn),感興趣的可以了解一下2023-08-08java.lang.ExceptionInInitializerError異常的解決方法
這篇文章主要為大家詳細(xì)介紹了java.lang.ExceptionInInitializerError異常的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10java并發(fā)編程專題(一)----線程基礎(chǔ)知識(shí)
這篇文章主要介紹了java并發(fā)編程線程的基礎(chǔ)知識(shí),文中講解非常詳細(xì),幫助大家更好的學(xué)習(xí)JAVA并發(fā)編程,感興趣想學(xué)習(xí)JAVA的可以了解下2020-06-06SpringBoot如何注冊(cè)Servlet、Filter、Listener的幾種方式
在Servlet 3.0之前都是使用web.xml文件進(jìn)行配置,這篇文章主要介紹了SpringBoot如何注冊(cè)Servlet、Filter、Listener的幾種方式,在Servlet 3.0之前都是使用web.xml文件進(jìn)行配置,2018-10-10