java - 按最小和最大日期搜索消息会产生错误的结果
问题描述
我正在使用这些javax.mail
类来连接到 Microsoft Outlook 并获取邮件。我想做的是找到两个日期之间发送的所有消息。我将最小和最大日期作为日期类型ZonedDateTime
。例如:
ZonedDateTime minZonedDateTime = ZonedDateTime.of(2017, 6, 15, 0, 0, 0, 0, ZoneId.systemDefault());
ZonedDateTime maxZonedDateTime = ZonedDateTime.of(2017, 6, 20, 0, 0, 0, 0, ZoneId.systemDefault());
我的默认时区是'Australia/Sydney'
. 因此,为了获取这两个日期之间的所有邮件,我执行以下操作:
Date minDate = Date.from(minZonedDateTime.toInstant());
Date maxDate = Date.from(maxZonedDateTime.toInstant());
SentDateTerm minSentDateTerm = new SentDateTerm(ComparisonTerm.GE, minDate);
SentDateTerm maxSentDateTerm = new SentDateTerm(ComparisonTerm.LE, maxDate);
SearchTerm term = new AndTerm(maxSentDateTerm,minSentDateTerm);
Folder folderInbox = store.getFolder("INBOX");
folderInbox.open(Folder.READ_ONLY);
Message[] messages = folderInbox.search(term);
现在,当我打印所有收到消息的 sentDates 时,我得到以下结果:
Tue Jun 20 19:01:57 AEST 2017
Mon Jun 19 18:31:31 AEST 2017
Sun Jun 18 18:54:26 AEST 2017
Sun Jun 18 18:31:24 AEST 2017
Sun Jun 18 01:08:46 AEST 2017
Sat Jun 17 00:54:27 AEST 2017
Fri Jun 16 00:27:56 AEST 2017
所有消息都被正确提取并属于该区间,除了第一条消息,
如果大于 maxDate 的sentDate
值,则该消息的 sendDate 的值大于 maxDate 的值,结果为 1。这怎么可能?(Tue Jun 20 19:01:57 AEST 2017)
messages[0].getSentDate().compareTo(maxDate)
解决方案
推荐阅读
- python - 如何修复此错误:numpy.ndarray“对象没有属性”附加“
- android - 使用 FirebaseListAdapter 填充 Listview 的问题
- objective-c - 在以不受支持的方式自定义 AppKit 行为时,有没有人体验过 Mac App Store 接受规则?
- ruby-on-rails - Rspec login_user 问题
- java - 图像卷积不按照实际算法工作
- c - C - libssh 和 sftp - 客户端/服务器 - 创建 sftp 会话挂起
- ionic4 - Alexa 语音服务与 ionic 的集成
- ios - 如何从应用程序内更改系统警报语言
- google-cloud-platform - 如何更改 ~/.gsutil 目录的位置?
- c# - C# Discord Bot 错误:Newtonsoft.Json.JsonReaderException