0%

Python带时区时间处理

我们从外部获取到的时间数据,是str类型的。如果时间的时区为UTC+0时区,要转成东八区来显示,可以按如下方法来操作。

1
2
3
4
5
6
7
from datetime import datetime
import pytz

format = "%Y-%m-%d %H:%M:%S"
date = datetime.strptime("2022-04-01 12:00:00", format)
converted_date = date.replace(tzinfo=pytz.utc).astimezone(pytz.timezone("Asia/Shanghai"))
print(datetime.strftime(converted_date, format))

如果是在DataFrame里,比如从Excel里面读出来的数据。可用下面方法。

1
2
3
4
5
6
7
import pandas as pd

df = pd.DataFrame(["2022-03-22 12:00:05", "2022-03-22 13:10:05"], columns=['date'])

df['date2'] = pd.to_datetime(df['date'], format="%Y-%m-%d %H:%M:%S")
df['date3'] = df['date2'].dt.tz_localize(pytz.utc).dt.tz_convert("Asia/Shanghai").dt.strftime("%Y-%m-%d %H:%M:%S")
df

这个dt不能缺少,用于Datetime上面的。

1
2
3
df['date2'].dt

<pandas.core.indexes.accessors.DatetimeProperties object at 0x7fbe14fd2f10>