我有一个CSV
文件,其中包含特定格式的记录日期时间:
%Y-%m-%d %H:%M:%s %Z
示例:
2017-02-11 14:11:42 PST
我正在尝试将datetime
格式化为更友好的值,以便稍后使用。
但是,到目前为止,我无法使用我的代码创建datetime
对象。
这是我的代码:
for r in row:
purchase_date.append(
datetime.strptime(row['purchase-date'], "%Y/%m/%d %H:%M:%S %Z")
)
这是收到的错误:
ValueError: time data '2017-02-11 14:11:42 PST' does not match format %Y/%m/%d %H:%M:%S %Z'
答案 0 :(得分:0)
尝试从字符串转换时,时区通常很不稳定。通常最好自己处理时区字符串。这里有一些代码将时区与时间戳分开,然后单独转换它们。
<强>代码:强>
import datetime as dt
import pytz
my_timezones = dict(
PST='US/Pacific',
)
def convert_my_datetime_str(dt_str):
# split into time and timezone
timestamp, tz_str = dt_str.rsplit(' ', 1)
# convert the date string to datetime
time = dt.datetime.strptime(timestamp, "%Y-%m-%d %H:%M:%S")
# get a timezone name
tz = pytz.timezone(my_timezones[tz_str])
# return a timezone aware datetime
return tz.localize(time)
测试代码:
print(convert_my_datetime_str('2017-02-11 14:11:42 PST'))
<强>结果; 强>
2017-02-11 14:11:42-08:00
答案 1 :(得分:0)
您应该只需更改格式即可匹配日期字符串。在错误中,您的日期字符串有破折号而不是斜杠,因此请使格式字符串匹配:
for r in row:
purchase_date.append(
datetime.strptime(row['purchase-date'], "%Y-%m-%d %H:%M:%S %Z")
)