【问题标题】:How to convert a datetime format like 2017-02-09T09:43:04.216+1000 to 09-Feb-2017 using python strptime and strftime?如何使用 python strptime 和 strftime 将日期时间格式如 2017-02-09T09:43:04.216+1000 转换为 09-Feb-2017?
【发布时间】:2019-08-30 00:44:09
【问题描述】:

我有一些从 JIRA API 动态输入的创建和更新的日期时间,用于使用 python 脚本加载到 Excel 工作表中每月获取 JIRA 票证的自动化过程。

部分示例日期如下:

  1. 2017-02-09T09:33:33.508+1100
  2. 2017-05-19T13:59:36.735+1000

我想以 %d-%b-%Y 之类的格式呈现此内容(例如:2017 年 2 月 9 日)

我尝试过使用 python datetime.strptimestrftime

示例代码如下:

from datetime import datetime

datetimeObj = datetime.strptime('2017-02-09T09:43:04.216+1000', '%Y-%m-%dT%H:%M:%S.%f+1000')

print(datetimeObj.strftime('%d-%b-%Y'))

这给了我预期的结果,但现在我已经硬编码了我想要的日期等值,并以日期时间格式添加了+1000,但由于它动态变化的日期时间,当日期时间以 @ 之类的值结束时我会卡住987654325@.

我相信最后一部分与夏令时有关,但在这种情况下我找不到正确的格式。

有没有办法为最后的+1000+1100 部分转换日期时间格式,而不是像'%Y-%m-%dT%H:%M:%S.%f+1000' 这样的硬编码?

【问题讨论】:

  • 只是在进行试错法时找到了答案。 datetimeObj = datetime.strptime('2017-02-09T09:43:04.216+1000', '%Y-%m-%dT%H:%M:%S.%f%z') 最后使用 %z 解决了这个问题。
  • 您似乎不需要事件的实际时间。如果是这样,您可以切分日期,然后通过 datetime.strptime(date[:10], '%Y-%m-%d') 暂停它,这样可以省去暂停剩余时间的麻烦。
  • 谢谢@HenryYik。它确实省去了麻烦。

标签: python datetime strptime strftime


【解决方案1】:

刚刚找到了这个问题的答案。如果其他人像我一样被卡住,希望这对其他人也有帮助。

from datetime import datetime

datetimeObj = datetime.strptime('2017-02-09T09:43:04.216+1000', '%Y-%m-%dT%H:%M:%S.%f%z')

print(datetimeObj.strftime('%d-%b-%Y'))

使用%z 将解决问题。

%z 是 python strftime()strptime() 中的 UTC 偏移量,格式为 +HHMM 或 -HHMM(如果对象是幼稚的,则为空字符串)。

当在时间格式结束时存在 (empty), +0000, -0400, +1030 等值时,这会有所帮助。

【讨论】:

    【解决方案2】:

    您似乎已经找到了解决方案,但如果这始终是格式..

    你可以这样做:

    date = '2017-02-09T09:33:33.508+1100'
    
    d = re.search('[0-9]+-[0-9]+-[0-9]+',date).group()
    d = re.search('([0-9]+-)+[0-9]+',date).group()
    d = date.split('T')[0]
    d = date[0:10]
    

    或者这个的一些变体......然后:

    print(datetime.strptime(d,'%Y-%m-%d').strftime('%d-%b-%Y'))
    

    print(datetime.strptime(''.join(re.findall('\d+',date)[0:3]),'%Y%m%d').strftime('%d-%b-%Y'))
    

    :)

    【讨论】:

    • 谢谢德里克。欣赏它。
    猜你喜欢
    • 2011-10-17
    • 2018-02-17
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多