如何在Python中将日期时间字符串中的时间从24: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。什么是最简单的方法?如何在Python中将日期时间字符串中的时间从24: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 
+0

+1。只是因为我喜欢它> 8-) – 2010-08-16 14:16:02

+1

+1因为我从来不知道'email.utils.parsedate()'直到现在才存在,学习很有趣! – jathanism 2010-08-16 14:19:59

+0

是的,我在这里也了解到了'email.utils.parsedate' ... :) – unutbu 2010-08-16 14:21:45