對于我正在創建的東西,用戶可以購買可以使用 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 語句中的第三個問號以進行保存)。
添加回答
舉報
0/150
提交
取消