- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的数据集中有一个不寻常的日期时间格式,我需要将其转换为可用的日期时间对象。
示例如下:“1/3/2018 1:29:35 PM(UTC+0)”
我尝试用以下方法解析它:
from dateutil.parser import parse
parse('1/3/2018 1:29:35 PM(UTC+0)')
但它无法识别该格式。
我当前的解决方法是使用正则表达式将日期时间列(数据位于 pandas 数据框中)解析为两列,如下所示:
然后根据“utc”列的值应用自定义的convert_to_eastern 函数。
我想知道是否有更简单的方法使用 datetime.datetime.strptime() 来完成它?
以下内容无效:
import datetime as dt
my_time='1/3/2018 1:29:35 PM(UTC+0)'
dt.datetime.strptime(my_time, '%m/%d/%Y %I:%M:%S %p(%z)')
补充:这不是一个问题:“如何将 UTC 时区转换为本地时区”我的数据集包含包含 UTC 的行以及东部时区的行。我遇到的问题是该格式不是 ISO 格式,而是一些人类可读的自定义格式。
最佳答案
Question: an easier way to accomplish it using datetime.datetime.strptime()
将日期字符串拆分为多个部分:utc:[('1/3/2018 1:29:35 PM', '(UTC+0)', 'UTC', '+', '0') ]
重建日期字符串,将 hour
部分用 0
填充修复为 2 位数字。
我假设,UTC
部分中没有分钟
,因此默认为 00
。
如果日期字符串的位数超过 2 个 UTC
位,则返回未更改的日期字符串。
Note: The
strptime
format have to be%Z%z
!
Documentation: strftime-and-strptime-behavior
from datetime import datetime
import re
def fix_UTC(s):
utc = re.findall(r'(.+?)(\((\w{3})(\+|\-)(\d{1,2})\))', s)
if utc:
utc = utc[0]
return '{}({}{}{})'.format(utc[0], utc[2], utc[3], '{:02}00'.format(int(utc[4])))
else:
return s
my_time = fix_UTC('1/3/2018 1:29:35 PM(UTC+0)')
date = datetime.strptime(my_time, '%m/%d/%Y %I:%M:%S %p(%Z%z)')
print("{} {}".format(date, date.tzinfo))
Output:
2018-01-03 13:29:35+01:00 UTC
使用 Python 测试:3.4.2
关于python - 将不寻常/自定义时间格式转换为日期时间对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53820860/
我是一名优秀的程序员,十分优秀!