我试图使用 IMAP 从 Outlook 的收件箱中获取某个日期的电子邮件,但我收到的电子邮件的日期与我用于搜索的日期不符,我的代码如下:SimpleDateFormat df1 = new SimpleDateFormat( "MM/dd/yy" );String dt="10/02/18";java.util.Date dDate = df1.parse(dt);/* Connection code to the email goes here */SearchTerm st = new ReceivedDateTerm(ComparisonTerm.EQ,dDate);IMAPFolder inbox = (IMAPFolder) store.getFolder("INBOX");inbox.open(Folder.READ_WRITE);Message[] messages = inbox.search(st);int total = messages.length;/* RESULTS */println("\nTotal_Email = " + messages.length);for (int index = 0; index < total; index++) { Date date=message.getReceivedDate(); System.out.println("DATE RECEIVED="+date);}当我使用日期“10/01/18”时,我得到以下结果Total_Email = 5收到日期=周一 10 月 1 日 17:45:44 COT 2018收到日期=周一 10 月 1 日 16:43:27 COT 2018收到日期=周一 10 月 1 日 16:17:11 COT 2018收到日期=周一 10 月 1 日 15:37:38 COT 2018收到日期=周一 10 月 1 日 14:53:48 COT 2018然后当我使用日期“10/02/18”时得到以下结果Total_Email = 6收到日期 = 2018 年 10 月 2 日星期二 08:09:53 COT收到日期=周一 10 月 1 日 23:21:34 COT 2018收到日期=周一 10 月 1 日 22:37:22 COT 2018收到日期=周一 10 月 1 日 21:33:37 COT 2018收到日期=周一 10 月 1 日 20:21:20 COT 2018收到日期=周一 10 月 1 日 19:11:50 COT 2018我的猜测是这与我的时区有关,我住在哥伦比亚,我的时区是 GMT-5,有什么办法可以修复并获得正确的结果?
1 回答
DIEA
TA贡献1820条经验 获得超2个赞
不,IMAP 不知道时区,它是服务器特定的,它计算和报告结果的时区。您可能需要请求比您需要的更多并进行客户端过滤。
大多数大型跨国服务器为方便起见使用 UTC,因此您必须获取与您感兴趣的时间段重叠的两天。
添加回答
举报
0/150
提交
取消