【发布时间】:2010-08-16 22:20:55
【问题描述】:
我有很多日期字符串,例如Mon, 16 Aug 2010 24:00:00,其中一些采用00-23 小时格式,其中一些采用01-24 小时格式。我想获取它们的日期对象列表,但是当我尝试将示例字符串转换为日期对象时,我必须将其从Mon, 16 Aug 2010 24:00:00 转换为Tue, 17 Aug 2010 00:00:00。最简单的方法是什么?
【问题讨论】:
我有很多日期字符串,例如Mon, 16 Aug 2010 24:00:00,其中一些采用00-23 小时格式,其中一些采用01-24 小时格式。我想获取它们的日期对象列表,但是当我尝试将示例字符串转换为日期对象时,我必须将其从Mon, 16 Aug 2010 24:00:00 转换为Tue, 17 Aug 2010 00:00:00。最简单的方法是什么?
【问题讨论】:
import email.utils as eutils
import time
import datetime
ntuple=eutils.parsedate('Mon, 16 Aug 2010 24:00:00')
print(ntuple)
# (2010, 8, 16, 24, 0, 0, 0, 1, -1)
timestamp=time.mktime(ntuple)
print(timestamp)
# 1282017600.0
date=datetime.datetime.fromtimestamp(timestamp)
print(date)
# 2010-08-17 00:00:00
print(date.strftime('%a, %d %b %Y %H:%M:%S'))
# Tue, 17 Aug 2010 00:00:00
既然你说你有很多这些要修复,你应该定义一个函数:
def standardize_date(date_str):
ntuple=eutils.parsedate(date_str)
timestamp=time.mktime(ntuple)
date=datetime.datetime.fromtimestamp(timestamp)
return date.strftime('%a, %d %b %Y %H:%M:%S')
print(standardize_date('Mon, 16 Aug 2010 24:00:00'))
# Tue, 17 Aug 2010 00:00:00
【讨论】:
email.utils.parsedate() 的存在而且学习很有趣!
email.utils.parsedate... :)
Mon, 16 Aug 24:00:01到Tue, 17 Aug 00:00:00)