2010-08-16 17 views
8

Ho un sacco di stringhe di date come Mon, 16 Aug 2010 24:00:00 e alcune di esse sono nel formato 00-23 ora e alcune di esse nel formato ora 01-24. Voglio ottenere un elenco di oggetti di data di loro, ma quando provo a trasformare la stringa di esempio in un oggetto di data, devo trasformarlo da Mon, 16 Aug 2010 24:00:00 a Tue, 17 Aug 2010 00:00:00. Qual è il modo più semplice?Come posso convertire l'ora in una stringa datetime dalle 24:00 alle 00:00 in Python?

risposta

8
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 

Dal momento che dire che hai un sacco di questi da risolvere, è necessario definire una funzione:

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. Solo perché mi è piaciuto> 8-) –

+1

+1 perché non ho mai nemmeno saputo che 'email.utils.parsedate()' esisteva fino ad ora e imparare è divertente! – jathanism

+0

Sì, ho imparato a conoscere anche 'email.utils.parsedate' qui su SO ... :) – unutbu

Problemi correlati