gpt4 book ai didi

java - 将 "day of the year"作为到期日期存储在数据库中,但如果年份发生变化,这将不起作用

转载 作者:行者123 更新时间:2023-11-30 06:00:48 28 4
gpt4 key购买 nike

对于我正在创建的东西,用户可以购买可以持续 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

关于如何克服这个问题还有其他建议吗?

最佳答案

毫无疑问,最简单的方法是使用 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 语句中的第三个问号以进行保存)。

关于java - 将 "day of the year"作为到期日期存储在数据库中,但如果年份发生变化,这将不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52311678/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com