gpt4 book ai didi

python - 将不寻常/自定义时间格式转换为日期时间对象

转载 作者:行者123 更新时间:2023-12-01 01:21:10 25 4
gpt4 key购买 nike

我的数据集中有一个不寻常的日期时间格式,我需要将其转换为可用的日期时间对象。

示例如下:“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 数据框中)解析为两列,如下所示:

dataframe

然后根据“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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com