起步
time 模块
了解时间戳、结构化时间对象、时间格式化
# 时间戳 单位秒
time.time()
# 结构化时间对象
st = time.localtime() # 等价于 time.localtime( time.time() )
print(st)
"""
time.struct_time(
tm_year=2020, # 年
tm_mon=7, # 月
tm_mday=14, # 日
tm_hour=19, # 时
tm_min=26, # 分
tm_sec=51, # 秒
tm_wday=1, # 星期几 0:表示星期一
tm_yday=196, # 今年的第n天
tm_isdst=0 # 是否为夏令时
)
"""
# 格式化的时间字符串
time.ctime() # Tue Jul 14 23:20:07 2020 # 这是取本地时间
time.ctime(time.time()) # Tue Jul 14 23:20:07 2020
time.asctime( time.localtime() ) # Tue Jul 14 23:20:07 2020
time.strftime("%Y-%m-%d %H:%M:%S") # 2020-07-14 23:20:07 # 默认取当前的本地时间
time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) # 2020-07-14 23:20:07
time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime()) # 2020-07-14 15:20:07 # 取 UTC 时间
三种格式之间的互转
# 时间戳 -> 结构化对象
time.gmtime( time.time() ) # UTC 时间
time.localtime( time.time() ) # 本地时间
# 结构化时间对象 -> 时间戳
time.mktime( time.localtime() )
# 结构化对象 -> 格式化时间字符串
time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime())
# 时间格式字符串 -> 结构化时间对象
strtime = '2020-07-14 13:28:18'
time.strptime(strtime, "%Y-%m-%d %H:%M:%S")
datetime 模块
datetime.date
datetime.time
datetime.datetime
datetime.timedelta
# 创建 datetime 对象
datetime.datetime(year, month=None, day=None, hour=0, minute=0, second=0,
microsecond=0, tzinfo=None)
datetime.datetime.now() # 以当前时间作为 datetime
datetime.datetime.today() # 与 now 一样
其他格式转 datetime
# 时间戳 -> datetime
datetime.datetime.fromtimestamp(time.time())
# 字符串格式 -> datetime
datetime.datetime.strptime('2020-07-14 23:56:10', '%Y-%m-%d %H:%M:%S')
# 结构化对象 -> datetime 没有直接转换接口,需要先转为时间戳
datetime.datetime.fromtimestamp(time.mktime(time.localtime()))
datetime 转其他格式
dt = datetime.datetime.now()
# 转为结构化时间对象
dt.timetuple()
# 转为时间戳
dt.timestamp()
# 转为字符串格式
dt.strftime('%Y-%m-%d %H:%M:%S')
时区的转换
from datetime import datetime, timedelta, timezone
# utc 时间
utc_dt = datetime.utcnow().replace(tzinfo=timezone.utc)
print(utc_dt) # 2020-07-14 15:20:07.534451+00:00
# 北京时间
cn_dt = utc_dt.astimezone(timezone(timedelta(hours=8))) # 东八区
print(cn_dt) # 2020-07-14 23:20:07.534451+08:00
ja_dt = utc_dt.astimezone(timezone(timedelta(hours=9))) # 日本时间
print(jan_dt) # 2020-07-15 00:20:07.534451+09:00
# 北京时间转东京时间
cn_2_ja_dt = cn_dt.astimezone(timezone(timedelta(hours=9)))
print(cn_2_ja_dt) # 2020-07-15 00:20:07.534451+09:00
参考