使用箭头python将字符串转换为日期



我正在尝试使用arrow模块将字符串转换为日期。在转换过程中,我收到了以下错误:arrow.parser.ParserMatchError: Failed to match '%A %d %B %Y %I:%M:%S %p %Z' when parsing 'Wednesday 06 November 2019 03:05:42 PM CDT'

根据本文档,转换是使用一条简单的线路完成的:

date = arrow.get(date, '%A %d %B %Y %I:%M:%S %p %Z')

我也尝试用datetime做这件事,但得到了另一个错误:

ValueError: time data 'Wednesday 06 November 2019 03:27:33 PM CDT' does not match format '%A %d %B %Y %I:%M:%S %p %Z'

我错过了什么?

问题与时区有关,此处对时区进行硬编码有效

import datetime
datetime.datetime.strptime('Wednesday 06 November 2019 03:05:42 PM CDT', '%A %d %B %Y %I:%M:%S %p CDT')

尽管您可以将'CDT'硬编码到您的代码中,正如@Hamza-Rashid在他的回答中所说,但如果时区信息更改为其他信息,例如'CST''-0600',则会中断。

为了避免这个潜在的问题,我会使用以下内容,它只是忽略字符串中从最后一个空格字符开始的所有内容:

import datetime
date = 'Wednesday 06 November 2019 03:05:42 PM CDT'
date = datetime.datetime.strptime(date[:date.rindex(' ')], '%A %d %B %Y %I:%M:%S %p')
print(date)  # -> 2019-11-06 15:05:42

相关内容

  • 没有找到相关文章