2017-01-16 3 views
0

Ich versuche, mein Python-Skript zu bearbeiten, so dass es täglich Daten aus einer Datenbank ziehen wird. Momentan bittet mein Skript um eine manuelle (rohe) Eingabe des Datums im Format: YYY: MM: DD: HH: MM: SS. Aber was ich wirklich brauche ist, dass die Startzeit basierend auf dem aktuellen Datum berechnet wird. DieseWie schreibe ich Funktion, um das aktuelle Datum als Zeiteingabe für Python-Skript zu berechnen

ist, was mein Skript wie jetzt aussieht:

from datetime import datetime, timedelta 
from pandas import DataFrame 
import pandas as pd 
from io import StringIO 

starttime_str = raw_input("enter time:") # example 2016:10:18:00:00:00 
arr = starttime_str.split(':') 
starttime = datetime(int(arr[0]), int(arr[1]), int(arr[2]), int(arr[3]), int(arr[4]), int(arr[5])) 

Aber was wirklich für Ich brauche die starttime_str des Computers Datum. Also sollte ich vielleicht eine Funktion schreiben um das Datum zu finden und dann den Zeitstempel zu berechnen? Ich werde den Cron-Eintrag aktualisieren, so dass das Skript täglich & automatisch ausgeführt wird. Ich weiß, ich sollte etwas wie pd.tslib.Timestamp.now() verwenden, aber ich brauche nicht die ganze Zeichenfolge.

+0

Does wies darauf hin, 'Datetime .datetime.now() 'Mach es für dich? –

+0

'date = datetime.datetime.today() .strftime ("% Y:% m:% d% H:% M:% S ")' – sgDysregulation

+2

Mögliches Duplikat von [Wie bekomme ich die aktuelle Zeit in Python] (http: //stackoverflow.com/questions/415511/how-to-get-current-time-in-python) – sgDysregulation

Antwort

1

Der Fehler im Kommentarbereich aufgelöst wird unter Verwendung von split() fuction im folgenden Code

from datetime import datetime, timedelta 
from pandas import DataFrame 
import pandas as pd 
from io import StringIO 

starttime_str = str(datetime.today()).replace("-", ":") 
arr = starttime_str.split(':') 
starttime = datetime(int(arr[0]), int(arr[1]), int(arr[2].split(' ')[0]), int(arr[2].split(' ')[1]), int(arr[3]), int(float(arr[4]))) 
1

Ich denke, das ist das, was Sie tun mögen:

from datetime import datetime, timedelta 
from pandas import DataFrame 
import pandas as pd 
from io import StringIO 

starttime_str = str(datetime.today()).replace("-", ":") 
arr = starttime_str.split(':') 
starttime = datetime(int(arr[0]), int(arr[1]), int(arr[2]), int(arr[3]), int(arr[4]), int(arr[5])) 
+0

Hm Ich bekomme den Fehler: 'ValueError: ungültiges Literal für int() mit Basis 10: '16 20'' – JAG2024

+0

Es tut mir leid. Ich habe vergessen, dass im Datum und in der Stunde Leerzeichen vorhanden sind. Sie können dieses Leerzeichen zuerst ersetzen, bevor Sie starttime_str splitten, und Sie müssen auch 'float (arr [5])' 'verwenden: ' starttime_str = str (datetime.today()). replace ("-", ":"). replace ("", ":") ' ' arr = startzeit_str.split (':') ' ' starttime = datumZeit (int (arr [0]), int (arr [1]), int (arr [2 ]), int (arr [3]), int (arr [4]), schweben (arr [5])) ' – suryadina

Verwandte Themen