如何检查时间戳是不是早于某个月数? [复制]

Posted

技术标签:

【中文标题】如何检查时间戳是不是早于某个月数? [复制]【英文标题】:How to check that a timestamp is older than a certain number of months? [duplicate]如何检查时间戳是否早于某个月数? [复制] 【发布时间】:2016-12-23 23:23:45 【问题描述】:

我正在尝试测试 timestamp(我的实体中的一个字段)是否早于某个月数。

我当前的代码是:

if(person.getBirthday().before(Timestamp.valueOf(String.valueOf(LocalDateTime.now().minusMonths(12))
   //do something

注意:生日是timestamp 字段,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)

我还能如何检查时间戳是否早于某个月数?

【问题讨论】:

【参考方案1】:

这里:

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.before() 进行比较,我不认为 .before() 方法可以作为参数需要很长时间? @java123999 否,但您可以使用 long 值创建一个新的 Timestamp。然后使用TImestamp.before(Timestamp) 好的,如何从长值创建一个新的时间戳?我只是使用时间戳和日期等的新手,因此问题很简单! @java123999 我编辑了它为了显示它的答案。 感谢您的帮助,您建议学习什么时间库以用于 Java?与其他相比,时间戳似乎不是很有用?

以上是关于如何检查时间戳是不是早于某个月数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

python redistimeseries 时间戳不能早于时间序列中的最新时间戳

删除早于几天的邮件 - 使用 MAP 的时间戳

Stripe 创建使用记录错误 - 时间戳必须早于订阅的当前周期结束时间 - Date.now()?

如何检查到 UNIX 时间戳之间是不是有时间变化

如何使用 pandas 数据框转换时间戳? [复制]

Impala SQL - 如何计算时间戳之间的月份?