需求為當我們只有開始與結束的年月時間,時間格式為yyyy/MM,例如 2023/09 ~ 2023/12

我們想要知道這個起訖時間是否為有限時間,意思是說開始時間是否已經生效,是不是已經超過結束時間 (過期)

如果已經生效並且還沒過期,就為有效時間

舉例來說: 撰寫文章的現在是 2023年10月

以剛剛的例子來說,開始時間為 2023/09,結束時間為 2023/12,

那麼因為現在是 2023年10月,9月的時候就已經生效了,並且還沒超過12月,所以這個區間的時間為有效時間

 

接著我們把邏輯轉換成以下程式:

Java - 只給起訖年月時間(yyyy/MM),如何判斷是

上述方法中的 getStartDate 如下圖所示:

Java - 只給起訖年月時間(yyyy/MM),如何判斷是

上述方法中的 getEndDate 如下圖所示:

Java - 只給起訖年月時間(yyyy/MM),如何判斷是

因為我們拿到的起迄時間只有年月,

所以首先先將開始年月,轉換成開始年月的1號,例如: 2023/09,必須先取得 2023/09/01的時間

(補充說明: 因為 java 程式中的月份是從 0 開始,所以必須要再減去 1)

接著我們就可以拿開始時間和現在時間比對是否已經生效,如果現在的時間在開始時間之後,代表已經生效了

 

接著我們要將結束年月,轉換成該月的最後一天,這邊比較特別的是,需要特別設定時間為最後一天的最後一分最後一秒

這樣的比對才精準,超過了該月最後一天的最後一分一秒才算過期

例如: 2023/12,那我們拿到的時間會是 2023/12/31 的23點59分59秒

接著可以拿現在時間和結束時間進行比對是否已經過期,如果現在時間在結束時間之後,代表已經過期了

 

arrow
arrow
    文章標籤
    java 有效時間判斷
    全站熱搜

    Mark Zhang 發表在 痞客邦 留言(0) 人氣()