猿问

Javamail IMAP - 按日期搜索邮件返回错误结果

我试图使用 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,有什么办法可以修复并获得正确的结果?


一只甜甜圈
浏览 638回答 1
1回答

DIEA

不,IMAP 不知道时区,它是服务器特定的,它计算和报告结果的时区。您可能需要请求比您需要的更多并进行客户端过滤。大多数大型跨国服务器为方便起见使用 UTC,因此您必须获取与您感兴趣的时间段重叠的两天。
随时随地看视频慕课网APP

相关分类

Java
我要回答