亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將“一年中的某一天”作為到期日期存儲在數據庫中,但如果年份發生變化,這將不起作用

將“一年中的某一天”作為到期日期存儲在數據庫中,但如果年份發生變化,這將不起作用

慕容708150 2021-09-15 17:30:32
對于我正在創建的東西,用戶可以購買可以使用 X 天的商品。該項目的到期日期存儲在我的 MySQL 數據庫中,我決定將它存儲為一個整數,它代表這一年已經過去的天數。然后我使用這個值來檢查當前過去的天數是否大于到期日,然后使項目到期。但是,如果該商品是在 12 月的第 360 天購買的,而到期日期是 30 天后,也就是明年的第 25 天,我將這兩個值進行了比較-該商品會提前到期 360 > 25.while (set.next()) {    String uuid = set.getString("UUID");    String rank = set.getString("Rank");    int expiry = set.getInt("Expiry");    if (DATE < expiry) {        pipe.hset("donator_data", set.getString("UUID"), set.getString("Rank"));    } else {        // expire rank    }}DATE是一年中過去的天數。此代碼在服務器啟動時運行一次,因此即使它不必太高效,但為了安心,我還是希望如此。我還考慮使用日期對象并比較它們,實際上我只需要兩個日期,到期(日/月/年)和當前(日/月/年)然后編寫一些代碼來比較它們(例如 if (expiryYear < year) | | if (expiryMonth < 月) 等。關于如何克服這個問題的任何其他建議?
查看完整描述

1 回答

?
jeck貓

TA貢獻1909條經驗 獲得超7個贊

無疑最簡單的是使用 MySQL 的date數據類型來存儲到期日期。


    LocalDate expiration = set.getObject("expiry", LocalDate.class);

    LocalDate today = LocalDate.now(ZoneId.of("Europe/London"));

    if (today.isBefore(expiration)) {

        System.out.println("Fine");

    } else  {

        System.out.println("Expired");

    }

將到期日期存儲到數據庫中:


    LocalDate expiration = LocalDate.now(ZoneId.of("Europe/London")).plusDays(30);

    yourPreparedStatement.setObject(3, expiration);

(假設到期日期應替換為您的 SQL 語句中的第三個問號以進行保存)。


查看完整回答
反對 回復 2021-09-15
  • 1 回答
  • 0 關注
  • 194 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號