如果我知道还有多少时间,我如何计算Grails中的过期日期?

如果我知道还有多少时间,我如何计算Grails中的过期日期?,grails,groovy,time,duration,content-expiration,Grails,Groovy,Time,Duration,Content Expiration,我想根据TTL在Redis中插入到期日期。 我如何计算有效期 我试图使用TimeCategoryclass,下面是一个示例: def ttl = 3600; def date = new Date() TimeDuration duration = getSeconds(ttl) TimeDuration expiryDate = date.plus.duration 这是计算有效期的正确方法吗 如果你问我的话,那就太复杂了 一个衬里应足够: Date expiryDate = new

我想根据TTL在Redis中插入到期日期。 我如何计算有效期

我试图使用
TimeCategory
class,下面是一个示例:

def ttl = 3600;
def date = new Date()

TimeDuration duration = getSeconds(ttl) 

TimeDuration expiryDate = date.plus.duration

这是计算有效期的正确方法吗

如果你问我的话,那就太复杂了

一个衬里应足够:

Date expiryDate = new Date( System.currentTimeMillis() + ttlInSeconds * 1000l )

请确保您在此处使用的是
long
数字,否则这些数字将被减少到
2147483647
,这可能会导致大型TTL的错误结果。

如果您要求我的话,这会导致过度复杂

一个衬里应足够:

Date expiryDate = new Date( System.currentTimeMillis() + ttlInSeconds * 1000l )

请确保您在此处使用的是
long
数字,否则数字将减少到
2147483647
,这可能会导致大型TTL的错误结果。

我是否应该导入groovy时间:
导入groovy.time.
?不需要额外的导入,很简单
java.util
此解决方案是否也可以在秒内工作?原因
ttl
是秒数,我可以看到您使用了
currentTimeMillis()
方法它正在计数,但显示了错误的数据,例如,如果
ttl=13140000
(5个月),到期日期显示:周一至四月08日11:07:37 EEST 2019
整数。最大值
=
2147483647
,因此,如果inted值大于该值,它将被减少。我是否应该导入groovy时间:
导入groovy.time.*
?不需要额外的导入,这很简单
java.util
此解决方案是否也能在几秒钟内工作?原因
ttl
是秒数,我可以看到您使用了
currentTimeMillis()
方法它正在计数,但显示了错误的数据,例如,如果
ttl=13140000
(5个月),到期日期显示:周一至四月08日11:07:37 EEST 2019
整数。最大值
=
2147483647
,因此,如果插入值大于该值,则会将其减少。