我觉得这个问题已经被以某种方式提出,但我仍然对我的结果没有信心。
我有一个 xsd:duration,它将给我一个以年、月、日和秒为单位的期望到期时间。duration.getYears()
例如,我可以使用或收集这些部分的整数值duration.getMonths()
。
因为我选择的数据库是 Cassandra,所以我想利用 TTL 选项,它会在指定的秒数后自动使插入的行过期。
关键部分是从 xsd:duration 获取符合公历的整数/长秒值(从现在开始的 1 个月不仅仅是 30.41 天,而是 31 天)。
目前,我正在使用以下代码:
LocalDateTime then = LocalDateTime.now().plusYears(duration.getYears()).plusMonths(duration.getMonths()).plusDays(duration.getDays()).plusHours(duration.getHours()).plusMinutes(duration.getMinutes()).plusSeconds(duration.getSeconds());
long ttlMillis = then.toInstant(ZoneOffset.UTC).toEpochMilli() - Instant.now().toEpochMilli();
有没有更快/更清洁的方法来做到这一点?
我也不确定我是否应该担心较长的持续时间......我的特定用例不需要超过 2 年的时间。