使用箭头 python 将字符串转换为日期
Convert string to date using arrow 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'
根据这个 documentation:
使用一行简单的代码完成转换
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'
。
为了避免这个潜在的问题,我会使用类似下面的东西,它只会忽略字符串中从最后一个 space 字符开始的所有内容:
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
我正在尝试使用 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'
根据这个 documentation:
使用一行简单的代码完成转换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'
。
为了避免这个潜在的问题,我会使用类似下面的东西,它只会忽略字符串中从最后一个 space 字符开始的所有内容:
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