将“一年中的某一天”作为到期日期存储在数据库中,但如果年份发生变化,这将不起作用

对于我正在创建的东西,用户可以购买可以使用 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 < 月) 等。


关于如何克服这个问题的任何其他建议?


慕容708150
浏览 175回答 1
1回答

jeck猫

无疑最简单的是使用 MySQL 的date数据类型来存储到期日期。&nbsp; &nbsp; LocalDate expiration = set.getObject("expiry", LocalDate.class);&nbsp; &nbsp; LocalDate today = LocalDate.now(ZoneId.of("Europe/London"));&nbsp; &nbsp; if (today.isBefore(expiration)) {&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("Fine");&nbsp; &nbsp; } else&nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("Expired");&nbsp; &nbsp; }将到期日期存储到数据库中:&nbsp; &nbsp; LocalDate expiration = LocalDate.now(ZoneId.of("Europe/London")).plusDays(30);&nbsp; &nbsp; yourPreparedStatement.setObject(3, expiration);(假设到期日期应替换为您的 SQL 语句中的第三个问号以进行保存)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java