如何检查时间戳是否早于一定的月数?
How to check that a timestamp is older than a certain number of months?
我正在尝试测试 timestamp
(我实体中的一个字段)是否超过一定的月数。
我当前的代码是:
if(person.getBirthday().before(Timestamp.valueOf(String.valueOf(LocalDateTime.now().minusMonths(12)){
//do something
}
注意:生日是 timestamp
字段,LocalDateTime
来自:org.joda.time.LocalDateTime
问题是这段代码给我 error:
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)
还有什么方法可以检查时间戳是否早于特定月数?
此处:
Timestamp.valueOf(String.valueOf(LocalDateTime.now() [...])
您正在将 LocalDateTime
(来自 joda 时间)转换为字符串并期望 Timestamp.valueOf
(来自 java.sql.Timestamp
)能够解析它,但他们不使用相同的日期格式。
您应该将 LocalDateTime 转换为时间戳(即毫秒数),然后从这一点开始进行比较。
示例:
long timestamp = LocalDateTime.now().minusMonths(12).toDateTime().getMillis()
编辑:
然后您可以从这个 long 值创建一个新的 Timestamp
并使用 Timestamp.before(Timestamp)
进行比较:
if(person.getBirthday().before(new Timestamp(timestamp)) {
[...]
}
我正在尝试测试 timestamp
(我实体中的一个字段)是否超过一定的月数。
我当前的代码是:
if(person.getBirthday().before(Timestamp.valueOf(String.valueOf(LocalDateTime.now().minusMonths(12)){
//do something
}
注意:生日是 timestamp
字段,LocalDateTime
来自:org.joda.time.LocalDateTime
问题是这段代码给我 error:
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)
还有什么方法可以检查时间戳是否早于特定月数?
此处:
Timestamp.valueOf(String.valueOf(LocalDateTime.now() [...])
您正在将 LocalDateTime
(来自 joda 时间)转换为字符串并期望 Timestamp.valueOf
(来自 java.sql.Timestamp
)能够解析它,但他们不使用相同的日期格式。
您应该将 LocalDateTime 转换为时间戳(即毫秒数),然后从这一点开始进行比较。
示例:
long timestamp = LocalDateTime.now().minusMonths(12).toDateTime().getMillis()
编辑:
然后您可以从这个 long 值创建一个新的 Timestamp
并使用 Timestamp.before(Timestamp)
进行比较:
if(person.getBirthday().before(new Timestamp(timestamp)) {
[...]
}