对于我正在创建的东西,用户可以购买可以使用 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
提交
取消