2016-07-26 12 views
0

Ich erstelle ein Python-Skript, das für ein bestimmtes Datum Anrufe mit und ohne Antwort sowie mit fehlgeschlagenen Anrufen anzeigt, aber ich bleibe bei der Formatierung des Datums, das angezeigt wird. Die Variablen "start_time" und "end_time" von Twilio drucken etwa so: "Mo, 25 Jul 2016 16:03:53 +0000". Ich möchte den Tag-Namen und das Komma loswerden, da ich die Ergebnisse in eine CSV-Datei (script_name.py> some_file.csv) speichern und das Komma nach dem Tag-Namen Art der CSV-Struktur.Datums-/Uhrzeitformatierung

In der Datei settings.py wird die Variable time_zone auf die rechte gesetzt (America/Chicago) und die Variable USE_TZ wird auf true gesetzt. Aber trotzdem ist die Ausgabe immer noch in UTC.

Ich weiß nichts über Python und die Dinge, die ich versucht habe, call.start_time zu einem Datetime zu analysieren, sind fehlgeschlagen. . . Ich würde wissen, wie es geht, wenn es ein gegebener Wert wie start_time = '2016-07-26' ist, aber ich weiß nicht, wie es geht, wenn der Wert für den Aufruf in client.calls.list kommt. . .

Jede Führung wird sehr geschätzt!

Danke!

from twilio.rest import TwilioRestClient 
from datetime import datetime 
from pytz import timezone 
from dateutil import tz 

# To find these visit https://www.twilio.com/user/account 
account_sid = "**********************************" 
auth_token = "**********************************" 

client = TwilioRestClient(account_sid, auth_token) 

for call in client.calls.list(
start_time="2016-07-25", 
end_time="2016-07-25", 
status='failed', 
): 

    print(datetime.datetime.strptime(call.start_time, "%Y-%m-%d %H:%M:%S")) 

Antwort

1

Der Code, den ich zur Verfügung gestellt habe, funktioniert einfach Datum und Uhrzeit Format.

from datetime import datetime 
from time import sleep 
print('The Time is shown below!') 
while True: 
    time = str(datetime.now()) 
    time = list(time) 
    for i in range(10): 
     time.pop(len(time)-1) 
    time = ('').join(time) 
    time = time.split() 
    date = time[0] 
    time = time[1] 
    print('Time: '+time+', Date: '+date, end='\r') 
    sleep(1) 

Allerdings, wenn Sie nur zu formatieren „Mo, 25. Juli 2016 16.03.53 0.000“ auf der Suche, wie Sie gesagt haben und nur den Tag entfernen so etwas wie dies berücksichtigen:

day = "Mon, 25 Jul 2016 16:03:53 +0000" 
# Convert to an array 
day = list(day) 
# Remove first 5 characters 
for i in range(5): 
    day.pop(0) 
day = ('').join(day) 
print(day) 

# You can use if statements to determine which day it is to decide how many characters to remove. 
>>> "25 Jul 2016 16:03:53 +0000" 
+0

Dies ist eine sehr seltsame Problemumgehung. 'strptime' kann es gut parsen, und Ihr gesamter zweiter Block Code kann mit nur' day [5:] 'erledigt werden. – Hobbes

1

Das Format Sie müssen analysieren, wird durch den Zeitstempel von Twillo diktiert. Sie erhalten das folgende Format-String, um richtig den Zeitstempel zu analysieren wahrscheinlich benötigen:

print(datetime.datetime.strptime(call.start_time, "%a, %d %b %Y %H:%M:%S %z")) 

Ein großer Führer für die Formatierungszeichenfolge ist http://strftime.org/.

Eine weitere gute Bibliothek für das mühsame Konvertieren von Datumsangaben aus Zeichenfolgen ist die Python-Dateutil-Bibliothek, die Sie unter https://dateutil.readthedocs.io/ finden.