从电子邮件中解析日期的最佳方式

时间:2010-04-13 05:18:25

标签: email parsing date

我目前正在开发一款可以解析电子邮件日期的应用程序 - 即从电子邮件中提取时间和日期(类似于gmail)。

目前我在php中这样做,但这有点笨重。

什么是最好的语言,是否有任何现有的开源解决方案?

3 个答案:

答案 0 :(得分:0)

我认为PHP与其他任何语言一样强大。我们可以看到您正在使用的代码,以便我们建议改进吗?我会使用正则表达式......你只需要一个支持各种格式的好表达式。

答案 1 :(得分:0)

我在我的电子邮件客户端中执行的操作是提取由空格分隔的所有标记,然后使用启发式迭代它们来决定如何对每个标记进行分类。例如,如果令牌中有一个':'字符,那么我将其视为一个时间,将其解析为##:##:##。如果它有'。'或者“ - ”将其视为日/月/年组合,您必须决定哪一端...可以是任意数量的组合。如果令牌以字母开头(即isalpha(* string)),那么您将进行一个月的名称查找。如果它是一个数字,它可能是一天或一年...根据长度决定,你是否已经有现有的一天或一年等。如果令牌以' - '或'+'开头,则它是一个时区,相应地解析。

似乎在这个领域工作得很好,我的电子邮件客户端已经存在了10年左右。我的代码是C ++,但您可以轻松地在PHP中编写相同的代码,但这并不是特定于语言的。

答案 2 :(得分:0)

如果您指的是发送(或接收)的日期,您将从邮件标题中检索它们(例如“日期:”标题)并且它们具有标准日期格式,请参阅RFC 2822

无论如何,如果您使用javamail(现在是开源),您可以使用

获取发送日期
Date sentDate = mail.getSentDate();