我试图使用python脚本解析电子邮件的日期时间。

在我打开邮件时,邮件日期值如下所示...

1

2

3

4from: abcd@xyz.com

to: def@xyz.com

date: Tue, Aug 28, 2012 at 1:19 PM

subject: Subject of that mail

我正在使用代码

1

2

3

4

5

6

7mail = email.message_from_string(str1)

#to = re.sub('','',mail["To"])

to = parseaddr(mail.get('To'))[1]

sender = parseaddr(mail.get('From'))[1]

cc_is = parseaddr(mail.get('Cc'))[1]

date = mail["Date"]

print date

使用python解析的相同邮件日期时间的输出如下所示,具有时间偏移。

1Tue, 28 Aug 2012 02:49:13 -0500

我在哪里实际上是希望的

1Tue, Aug 28, 2012 at 1:19 PM

我对这两个价值观的关系感到很困惑。

任何人都可以帮我弄明白我需要同时进入邮件详细信息。

时区!乐趣。:-)

stackoverflow.com/questions/1790795/…

查看GMail中的电子邮件时,会在显示发送电子邮件的日期和时间时使用您的本地时区。解析"Tue,2012年8月28日02:49:13 -0500",然后更新到您当地的时区,并以GMail特定的方式格式化。

解析和格式化stdlib方式

email.utils模块包含一个parsedate_tz()功能,专门处理带有时区偏移的电子邮件标头。

它返回与time.struct_time兼容的元组,但添加了时区偏移量。附加的mktime_tz()函数将该元组转换为偏移值(自UNIX纪元以来的秒数)。然后可以轻松地将该值转换为datetime.datetime()类型对象。

同一模块还具有formatdate()功能,可将UNIX纪元时间戳转换为与电子邮件兼容的日期字符串:

1

2

3

4

5

6

7>>> from email.utils import parsedate_tz, mktime_tz, formatdate

>>> import time

>>> date = 'Tue, 28 Aug 2012 02:49:13 -0500'

>>> tt = parsedate_tz(date)

>>> timestamp = mktime_tz(tt)

>>> print formatdate(timestamp)

Tue, 28 Aug 2012 07:49:13 -0000

现在我们有一个适合外发电子邮件的格式化日期。要将其打印为我的本地时区(由我的计算机确定),您需要将localtime标志设置为True:

1

2>>> print formatdate(timestamp, True)

Tue, 28 Aug 2012 08:49:13 +0100

使用更好的工具进行解析和格式化

请注意,当我们尝试处理时区时,事情变得毛茸茸,并且formatdate()函数没有给你任何选项来格式化一些不同的东西(比如GMail),也不会让你选择不同的时区来工作用。

输入外部python-dateutil模块;它有一个解析函数,可以处理任何事情,并正确支持时区

1

2

3

4>>> import dateutil.parser

>>> dt = dateutil.parser.parse(date)

>>> dt

datetime.datetime(2012, 8, 28, 2, 49, 13, tzinfo=tzoffset(None, -18000))

parse()函数返回一个datetime.datetime()实例,这使得格式化更容易。现在我们可以使用.strftime()函数将其输出为您的电子邮件客户端:

1

2>>> print dt.strftime('%a, %b %d, %Y at %I:%M %p')

Tue, Aug 28, 2012 at 02:49 AM

当然,那仍然在当地时区;将其转换为您的时区,使用.astimezone()方法,使用新的tzone对象。 python-dateutil包对我们来说有些方便。

以下是如何在本地时区(到您的机器)打印它:

1

2

3>>> import dateutil.tz

>>> print dt.astimezone(dateutil.tz.tzlocal()).strftime('%a, %b %d, %Y at %I:%M %p')

Tue, Aug 28, 2012 at 09:49 AM

或者使用特定的时区代替:

1

2>>> print dt.astimezone(dateutil.tz.tzstr('Asia/Kolkata')).strftime('%a, %b %d, %Y at %I:%M %p')

Tue, Aug 28, 2012 at 07:49 AM

实际上我要求输出我可以捕获的解析邮件...比如CC,TO或SENDER .....你引导我格式化那个日期时间字符串......我很舒服。

我刚刚再次更新了我的问题。

对,你对我认为的时区感到困惑;电子邮件日期被解析为一个时区,显示在另一个时区。这通常不是问题。

请注意,您的问题远非明确;目前尚不清楚您在哪里看到价值观和预期。

@Martijin:现在好吗?实际上我无法得到字符串"Tue,2012年8月28日下午1:19"..当我在浏览器中使用我的gmail acc打开它时,我可以在邮件中看到。

2012年8月28日星期二13:19:21在亚洲/加尔各答转换到2012年8月28日星期二02:49:21 GMT-5 ...所以这是我的最终答案..谢谢@Martijin的帮助。

给出了很长的更新

有parsedate_tz和mktime_tz,即你不需要手工解析UTC偏移量

@ J.F.Sebastian:谢谢;不知道我当时错过了那些。在我发布这个函数之后,这些函数并没有被添加..: - /

你只能使用stdlib来做到这一点:

1

2

3

4>>> from email.utils import parsedate_tz, mktime_tz, formatdate

>>> ts = mktime_tz(parsedate_tz('Tue, 28 Aug 2012 02:49:13 -0500'))

>>> formatdate(ts, localtime=True) # assuming Asia/Kolkata is the local timezone

'Tue, 28 Aug 2012 13:19:13 +0530'

如果您想使用PM格式数小时:

1

2

3>>> from datetime import datetime

>>> datetime.fromtimestamp(ts).strftime('%a, %b %d, %Y at %I:%M %p')

'Tue, Aug 28, 2012 at 01:19 PM'

JF Sebastian只是一个错字而不是日期时间他需要datetime.datetime示例应该是datetime.datetime.fromtimestamp(ts).strftime('%a,%b%d,%Y at%I:%M%p' )

@Dung:代码按原样运行。看看进口线。

此外,如果您希望日期格式与mysql日期时间格式匹配,则为:>>> datetime.fromtimestamp(ts).strftime('%y-%m-%d%H:%M:%S')

@Dung:再次,代码按原样运行。它产生OP明确要求的时间格式。看看这个问题。

可以选择以下代码

1

2

3

4start = f.find('date:') + 5 # +5 is to exclude 'date'+':' i.e.(4+1=5)

end = f.find('subject:', start) # parse from date to subject

date_time = f[start:end]

print date_time #it will print"Tue, Aug 28, 2012 at 1:19 PM"

邮件发送时间怎么修改 python_使用python通过电子邮件发送日期时间相关推荐

  1. Python将字符串转换为日期时间

    In this tutorial, we'll see how to convert string to datetime in python. 在本教程中,我们将看到如何在python中将字符串转换 ...

  2. Python处理ISO 8601日期时间

    文章目录 一.ISO 8601日期时间 1. 简介 2. 格式 3. 时区划分 二.Python处理ISO 8601日期时间 1. 将 ISO 8601 转化为 UTC 标准日期时间 / 本地时间 2 ...

  3. Python中的对日期时间的处理

    我们可以通过学习在Python中对日期时间的处理,可以在快速的完成工作,比如: 将日期时间作为日志信息的内容输入 计算某一个功能的执行时间 用日期命名一个文件的名称 记录或者展示文件的发布或修改时间 ...

  4. python自学时间-Python中基本的日期时间处理的学习教程

    Python程序能用很多方式处理日期和时间.转换日期格式是一个常见的例行琐事.Python有一个 time 和 calendar 模组可以帮忙. 什么是Tick? 时间间隔是以秒为单位的浮点小数. 每 ...

  5. Python 的6个日期时间库

    曾几何时,我们中的一个人(Lacey)盯了一个多小时的python文档中描述日期和时间格式化字符串的表格.当我试图编写从 API 中将日期时间字符串转换为Python datetime对象时,我很难理 ...

  6. Python—6.1、日期时间

    文档目录 1.time模块 时间元组 格式化符号 日期转换 日历模块 2.datetime模块 2.1.日期时区 2.2.当前时间 2.3.常用操作 2.4.时间加减 3.dateutil模块 1.t ...

  7. java发送gmail_如何在Gmail中轻松通过电子邮件发送人群

    java发送gmail Mailing lists are an old tool in the email arsenal, but their implementation in Gmail is ...

  8. java精准查询mysql时间_在mysql查询中查找与指定日期时间最接近的日期时间

    我试图在mysql数据库中找到一个datetime值,它与我指定的日期时间最接近,我遇到了一些麻烦 . 以下伪代码是我想要实现的: SELECT one FROM table WHERE dateti ...

  9. php 日期时间 取日期,从PHP中的文本中提取日期,时间和日期范围

    我正在构建一个本地事件日历,它采用RSS提要和网站抓取并从中提取事件日期. 我之前已经问过如何从PHP here中的文本中提取日期,并在MarcDefiant时获得了一个很好的答案: function ...

最新文章

  1. 高精度垃圾分类模型开发与硬件集成
  2. HTML5----CSS显示半个字符
  3. 3142:[HNOI2013]数列 - BZOJ
  4. linux I/O--I/O多路复用--详解(四)
  5. spring cloud 2.3.x 注册中心eureka 配置
  6. M理论能否成为解释一切的“万有理论”?
  7. 互联网晚报 | 3月1日 星期二 |​ 2022年苹果可能推出三款Apple Watch;“国家中小学智慧教育平台”投入试运行...
  8. python语音开发库-各种 Python 库/模块/工具
  9. Angular CLI 生成项目时css less scss样式使用说明
  10. 叉积求点到平面距离_求一个点到曲线或折线的最短距离?
  11. lIUNX如何加载U盘,光盘
  12. 洛谷OJ P3368 【模板】树状数组 2
  13. stm32f4串口烧录[flymcu]
  14. edius多机位多轨编辑
  15. matlab canon,Canonical state-space realization
  16. 实现一个直播视频app源码的邀请码功能
  17. localhost访问不了的解决方法
  18. 基于javaweb小说评价下载网站管理系统 ssm框架
  19. pikachu——验证码绕过(on client)python脚本解法
  20. 什么是一网统管?终于有人讲明白了

热门文章

  1. 腾讯云轻量服务器与CVM的区别?
  2. JAVA 去除重复对象方法
  3. C++在终端、文件中就地覆盖输出的方法
  4. linux重要的文件操作
  5. Git--Git基本使用
  6. hdwiki下model目录功能
  7. python进阶练习题:IRR计算 - 盈利能力的评价【难度:2级】--景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶
  8. Springcloud笔记超级详细
  9. CAST和CONVERT
  10. python 使用h5py 中遇到的问题