📜  datetime python timezone - Python (1)

📅  最后修改于: 2023-12-03 15:00:21.358000             🧑  作者: Mango

Python处理时区和日期时间

时间和日期是重要的程序员工具,同时时区也是一个关键的问题。Python提供了一些原生工具,用于处理时区和日期时间,包括datetime、pytz、dateutil等模块。

datetime模块

datetime模块是Python中处理日期和时间的主要模块。它定义了一些类和函数,用于处理日期、时间、时间差、时区等相关问题。

import datetime

# 获取当前时间
now = datetime.datetime.now()

# 格式化时间
print(now.strftime("%Y-%m-%d %H:%M:%S"))

# 创建一个时间对象
dt = datetime.datetime(2021, 10, 1, 12, 30, 0)

# 时间对象的一些常用属性
print(dt.year)
print(dt.month)
print(dt.day)
print(dt.hour)
print(dt.minute)
print(dt.second)

# 时间对象加减一些时间差
delta = datetime.timedelta(days=1, seconds=30)
new_dt = dt + delta
print(new_dt)

# 获取UTC时间
utcnow = datetime.datetime.utcnow()

# 将时间转换为UTC时间
dt_utc = datetime.datetime(2021, 10, 1, 12, 30, 0, tzinfo=datetime.timezone.utc)
print(dt_utc)

# 将时间从一个时区转换到另一个时区
dt_local = dt_utc.astimezone(pytz.timezone('Asia/Shanghai'))
print(dt_local)
pytz模块

pytz模块是Python中处理时区的重要模块。它提供了丰富的时区信息,并支持时区转换等操作。

import pytz

# 获取时区列表
all_timezones = pytz.all_timezones
print(all_timezones)

# 获取当前时区
local_timezone = pytz.timezone('Asia/Shanghai')

# 将时间转换为本地时间
dt_local = datetime.datetime(2021, 10, 1, 12, 30, 0, tzinfo=pytz.utc).astimezone(local_timezone)
print(dt_local)

# 将时间转换为UTC时间
dt_utc = dt_local.astimezone(pytz.utc)
print(dt_utc)
dateutil模块

dateutil模块是Python中处理日期和时间的另一个有用的模块。它提供了很多辅助函数和类,用于处理日期、时间、时间差等问题。

import dateutil

# 解析字符串为时间
dt_str = "2021-10-01 12:30:00"
dt = dateutil.parser.parse(dt_str)
print(dt)

# 计算时间差
delta = dateutil.relativedelta.relativedelta(dt, datetime.datetime.now())
print(delta)

以上代码片段展示了Python处理时区和日期时间的一些基本用法。需要注意的是,在处理时区和日期时间时,我们应该始终使用标准的时区名称,例如'Asia/Shanghai',而不是'+8:00'或'GMT+8'等。这样可以避免因夏令时等问题造成的错误。