我们正在尝试使用java日期比较将mySQL中存储的日期与从Gmail邮件原件中读取的纯文本日期字段进行比较。
首次,Gmail邮件纯文本日期被读取并存储在mySQL数据库字段“date_sent”类型TIMESTAMP中。 下次检查该消息时,它将获得消息纯文本日期,并使用Java日期比较功能将其与存储的date_sent值进行比较。
这种比较通常有效。但是 - 如果比较消息的日期和时间是在时间更改的日期的1am小时(夏令时到标准),则比较失败。
有没有人经历过这个?你怎么能解决它?
答案 0 :(得分:2)
看起来你有一场艰苦的战斗。如果消息在夏令时结束之日凌晨1:30到达,我认为您无论如何都不知道这是第一次发生在凌晨1:30(在时钟回归之前)还是第二次发生。 / p>
据推测,在夏令时开始的日期凌晨1点30分,你永远不会收到消息,因为这个时间实际上并不存在。
因此,如果您通过将文本字段转换为日期并存储它来执行此操作,那么您将始终遇到如何比较此类日期的问题。如果你在凌晨1点30分选错了,你的比较可能是错误的,如果你希望你的时区在夏令时和标准时间都是正确的话,我认为你不能做太多。
您可能会考虑做的一件事是将时间戳存储为文本而不是日期,以便转换永远不会发生。如果您使用yyyy-MM-dd HH:mm:ss
这样的格式,那么您应该能够进行文本比较而不是日期比较,并获得正确的结果。
答案 1 :(得分:1)
我从来没有经历过这个,因为我从来没有这样做过。我认为您需要做的是获取/知道文本日期的时区,将其转换为Date对象(使用该时区),然后比较日期。
您说您正在使用Date
比较方法,但这表示它需要Date
作为输入。所以你已经转换了吗?请告诉我们该代码。你在时区旅行吗?
Also, this question has very useful information that you can use.