如何检查时间戳是否早于一定数量的月份?
如何检查时间戳是否早于一定数量的月份?
这个问题已经有了答案:
我正在尝试测试我的实体中的时间戳
(一个字段)是否比某个月份早。
我的当前代码是:
if(person.getBirthday().before(Timestamp.valueOf(String.valueOf(LocalDateTime.now().minusMonths(12)){ //do something }
注意:出生日期是一个时间戳
字段,而LocalDateTime
来自:org.joda.time.LocalDateTime
问题是,这段代码给了我一个错误:
Exception in thread "main" java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at com.intellij.rt.execution.CommandLineWrapper.main(CommandLineWrapper.java:130) Caused by: java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff] at java.sql.Timestamp.valueOf(Timestamp.java:202)
还有什么其他的方法可以检查时间戳是否比某个月份早?
admin 更改状态以发布 2023年5月21日
这里:
Timestamp.valueOf(String.valueOf(LocalDateTime.now() [...])
您正在将一个LocalDateTime
(来自joda时间)转换为字符串,并期望Timestamp.valueOf
(来自java.sql.Timestamp
)能够解析它,但它们不使用相同的日期格式。
您应该将LocalDateTime转换为一个时间戳(即毫秒数),然后从该点开始比较。
例如:
long timestamp = LocalDateTime.now().minusMonths(12).toDateTime().getMillis()
编辑:
然后,您可以从此长值创建一个新的Timestamp
,并使用Timestamp.before(Timestamp)
进行比较:
if(person.getBirthday().before(new Timestamp(timestamp)) { [...] }