我们正在尝试使用 java 日期比较将存储在 mySQL 中的日期与从 Gmail 邮件的原始文本中读取的纯文本日期字段进行比较。
第一次通过时,Gmail 消息纯文本日期被读取并存储在 mySQL 数据库字段“date_sent”类型 TIMESTAMP 中。 下次检查该消息时,它会获取消息纯文本日期,并使用 Java 日期比较函数将其与存储的 date_sent 值进行比较。
这种比较通常有效。但是,如果要比较的消息 Date 的日期和时间是在时间更改的一天凌晨 1 点(标准夏令时),则比较失败。
有人遇到过吗?你是如何修复它的?
最佳答案
看来您正在进行一场艰苦的战斗。如果一条消息在夏令时结束的日期凌晨 1:30 到达,我认为您无法判断它是第一次出现在凌晨 1:30(时钟倒转之前)还是第二次。
据推测,您永远不会收到夏令时开始当天凌晨 1:30 的消息,因为这个时间实际上并不存在。
因此,如果您通过将文本字段转换为日期并存储它来执行此操作,您将始终遇到如何比较此类日期的问题。如果您选择错误的凌晨 1:30,您的比较有时可能是错误的,如果您希望夏令时和标准时间的时区正确,我认为您无能为力。
您可能会考虑做的一件事是将时间戳存储为文本,而不是日期,这样转换就永远不会发生。如果您使用类似 yyyy-MM-dd HH:mm:ss
的格式,那么您应该能够进行文本比较而不是日期比较,并获得正确的结果。
关于java - 时间变化会影响 Java 日期比较功能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19916614/