【问题标题】:Date/Time formatting日期/时间格式
【发布时间】:2016-07-27 04:08:02
【问题描述】:

我正在创建一个 python 脚本,该脚本将显示特定日期的忙碌、无应答和失败的呼叫,但我坚持显示日期的格式。 Twilio 的 start_time 和 end_time “变量”打印如下:“Mon, 25 Jul 2016 16:03:53 +0000”。我想去掉日期名称和逗号,因为我将结果保存到 csv 文件(script_name.py > some_file.csv)中,而日期名称后的逗号会破坏 csv 结构。

在 settings.py 文件中,time_zone 变量设置为右侧(美国/芝加哥),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"))

【问题讨论】:

    标签: python datetime formatting twilio


    【解决方案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)
    

    但是,如果您只想按照您所说的那样格式化“2016 年 7 月 25 日星期一 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"
    

    【讨论】:

    • 这是一个非常奇怪的解决方法。 strptime 可以很好地解析它,而您的整个第二块代码只需 day[5:] 即可完成。
    【解决方案2】:

    您需要解析的格式由 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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-23
      • 1970-01-01
      • 1970-01-01
      • 2017-12-10
      • 1970-01-01
      • 2019-01-28
      相关资源
      最近更新 更多