1

我们正在尝试使用 java date compare 将存储在 mySQL 中的日期与从 Gmail 邮件的原始读取的纯文本日期字段进行比较。

第一次通过时,Gmail 消息纯文本日期被读取并存储在 mySQL 数据库字段“date_sent”类型 TIMESTAMP 中。下次检查该消息时,它会获取消息纯文本日期,并使用 Java 日期比较函数将其与存储的 date_sent 值进行比较。

这种比较通常有效。但是 - 如果正在比较的消息日期的日期和时间在时间​​更改当天的凌晨 1 点期间(夏令时到标准),则比较失败。

有没有人经历过这个?你是怎么解决的?

4

2 回答 2

2

看来你有一场艰苦的战斗。如果在夏令时结束之日凌晨 1:30 收到一条消息,我认为您无法判断这是第一次出现凌晨 1:30(时钟返回之前)还是第二次。

据推测,您永远不会在夏令时开始之日凌晨 1:30 收到消息,因为这个时间实际上并不存在。

因此,如果您通过将文本字段转换为日期并存储它来执行此操作,您将始终遇到如何比较此类日期的问题。如果您选择错误的凌晨 1:30,您的比较有时可能是错误的,如果您希望您的时区正确,对于夏令时和标准时间,我认为您无能为力。

您可能会考虑做的一件事是将时间戳存储为文本,而不是日期,这样转换就不会发生。如果您使用这样的格式,yyyy-MM-dd HH:mm:ss您应该能够进行文本比较而不是日期比较,并获得正确的结果。

于 2013-11-11T21:58:58.923 回答
1

我从来没有经历过这个,因为我从来没有做过。我认为您需要做的是获取/知道文本日期的时区,将其转换为 Date 对象(使用该时区),然后以这种方式比较日期。

您说您正在使用Datecompare 方法,但这表示它需要 aDate作为输入。那你已经转换了吗?请向我们展示该代码。你在时区传递吗?

此外,这个问题有非常有用的信息可供您使用。

于 2013-11-11T21:52:26.020 回答