我们正在尝试使用java date compare将存储在mySQL中的日期与从Gmail消息原文中读取的纯文本日期字段进行比较。
第一次通过时,读取Gmail消息纯文本日期并将其存储在mySQL数据库字段“date_sent”类型的时间戳中。下次检查该消息时,它将获得消息纯文本日期,并使用Java Date比较函数将其与存储的date_sent值进行比较。
这种比较通常是有效的。但是,如果要比较的消息日期的日期和时间在更改时间的某一天的凌晨1点内(夏令时转换为标准),则比较失败。
有没有人经历过这种情况?你是怎么修好它的?
发布于 2013-11-12 05:58:59
看起来你遇到了一场艰苦的战斗。如果在夏令时结束的那一天收到一条消息,日期是凌晨1:30,我认为你无法判断这是第一次出现在凌晨1:30(时钟倒退之前)还是第二次出现。
大概,你永远不会在夏令时开始当天的凌晨1:30收到一条消息,因为这个时间实际上并不存在。
因此,如果您通过将文本字段转换为日期并将其存储来执行此操作,则始终存在如何比较此类日期的问题。如果你选择了错误的凌晨1:30,你的比较有时可能是错误的,我不认为你能做太多的事情,如果你希望你的时区是正确的,无论是夏令时还是标准时间。
可以考虑做的一件事是将时间戳存储为文本,而不是日期,这样转换就永远不会发生。如果您使用像yyyy-MM-dd HH:mm:ss这样的格式,那么您应该能够进行文本比较而不是日期比较,并获得正确的结果。
发布于 2013-11-12 05:52:26
我从来没有经历过这种情况,因为我从来没有做过。我认为您需要做的是获取/了解文本日期的时区,将其转换为date对象(使用该时区),然后以这种方式比较日期。
您说您正在使用Date compare方法,但这意味着它需要一个Date作为输入。那么你已经在转换了吗?请给我们看一下代码。您传入的是时区吗?
Also, this question has very useful information that you can use.
https://stackoverflow.com/questions/19916614
复制相似问题