2017-08-31 1 views
1

Ich bin neu in Python und ich versuche, die tatsächlichen Minuten jeden Tag seit 7:00 zu erhalten. Ich benutze mktime, um now_date1 und now_date2 in Sekunden zu erhalten, und dann wird der Plan um 60 subtrahiert und dividiert, um die Minuten zu erhalten. Aber ich erhalte den folgenden Fehler:Konvertiere lokale Zeit in UNIX

AttributeError: 'str' object has no attribute 'timetuple '

Es ist dies der richtige Ansatz?

Hier ist es den Code

import time 
import pytz 
from datetime import datetime 
from time import mktime as mktime 

now_date = datetime.now(pytz.timezone('Europe/Bucharest')) 
now_date1 = now_date.strftime('%H:%M:%S') 
now_date2 = now_date.strftime('7:00:00') 
# Convert to Unix timestamp 
d1_ts = time.mktime(now_date1.timetuple()) 
+0

'strftime' einen String zurückgibt. Sie müssen 'now_date2' in eine Zeitstruktur konvertieren und ein Zeitdelta ausführen. –

Antwort

1

strftime einen String zurückgibt. Nicht was du willst.

Sie waren ziemlich nah, aber es ist nicht notwendig, time in den Mix zu setzen. Nur der Code wie folgt ändern und Zeitdelta von datetime (inspiriert von How to calculate the time interval between two time strings) verwenden:

import pytz 
from datetime import datetime 

now_date = datetime.now(pytz.timezone('Europe/Bucharest')) 

from datetime import datetime 
FMT = '%H:%M:%S' 
now_date1 = now_date.strftime(FMT) 
now_date2 = now_date.strftime('7:00:00') 

tdelta = datetime.strptime(now_date1, FMT) - datetime.strptime(now_date2, FMT) 

print(tdelta) 

ich: 6:40:42 die seit es 12.42 ist hier zu passen scheint.

Um das Ergebnis in wenigen Minuten zu erhalten nur tun:

tdelta.seconds//60 

(beachten Sie, dass die Daten nur richtige Stunde/Zeit/Sekunden haben, das Jahr, den Monat, etc .. sind 1900 ... da sie‘ sind nicht verwendet)

+0

Sehr schön. Jetzt muss ich nur das tdelta in Minuten umwandeln. Vielen Dank ! –

+0

sehe meine Bearbeitung. 'tdelta.seconds // 60' –

0

ich denke, so etwas wie dies funktionieren könnte:

import time 
import datetime 
from time import mktime as mktime 

#current time 
now_date = datetime.datetime.now() 

#time at 7am 
today = datetime.date.today() 
now_date2 = datetime.datetime(today.year, today.month, today.day, 7, 0, 0, 0) 

#difference in minutes 
(now_date - now_date2).days * 24 * 60