2016-07-26 3 views
0

Я создаю скрипт python, который будет отображать занятые, неответные и неудачные вызовы на определенную дату, но я застрял в форматировании отображаемой даты. Старшие и конечные «переменные» из Twilio печатают что-то вроде этого: «Пн, 25 июля 2016 16:03:53 +0000». Я хочу избавиться от имени дня и запятой, так как я сохраняю результаты в файл csv (script_name.py> some_file.csv) и запятую после имени типа типа винтов в структуре csv.Форматирование даты и времени

В файле settings.py переменная time_zone установлена ​​вправо (America/Chicago), а для переменной USE_TZ установлено значение true. Но в любом случае выход по-прежнему находится в UTC.

Я ничего не знаю о Python и о том, что я пытался разобрать call.start_time в datetime, не удалось. , , Я бы знал, как это сделать, если это значение было задано как start_time = '2016-07-26', но я не знаю, как это сделать, когда значение приходит для вызова в client.calls.list. , ,

Любое руководство будет принята с благодарностью!

Спасибо!

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")) 

ответ

1

Код, который я предоставил, имеет простой формат даты и времени.

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) 

Однако, если вы ищете только для форматирования "Mon, 25 Jul 2016 16:03:53 +0000", как вы сказали, и просто удалить этот день рассмотреть что-то вроде этого:

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

Это очень странное обходное решение. 'strptime' может разбирать его просто отлично, а весь ваш второй блок кода можно сделать только с помощью' day [5:] '. – Hobbes

1

Формат вам нужно разобрать, продиктована меткой времени, предоставленной Twillo. Вы, вероятно, потребуется следующая строка формата, чтобы правильно разобрать метку времени:

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

Большое руководство для строки форматирования http://strftime.org/.

Другая хорошая библиотека для ленивого преобразования дат из строк - это библиотека python-dateutil, найденная по адресу https://dateutil.readthedocs.io/.

Смежные вопросы