跳转至

时间模块

参考文章:https://iswbm.com/203.html

时间戳 timestamp

时间戳本事没有时区的概念,同一时间戳可以被转换为不同时区的格式化或者结构化时间

import time

# 获取当前时间戳
stp = time.time()
"""
<class 'float'>
1609670371.4864702
"""
stp_int = int(stp)  # 不带毫秒

获取时区 time_zone

UTC(Coordinated Universal Time)时区 CST(China Standard Time)时区,UTC+8

from datetime import datetime, timezone, timedelta

utc_tz = timezone.utc
cst_tz = timezone(timedelta(hours=8))
import pyzt

utc_tz = pytz.timezone('UTC')  # <UTC>
cst_tz = pytz.timezone("Asia/Shanghai")  # <DstTzInfo 'Asia/Shanghai' LMT+8:06:00 STD>

时间戳转CST

from datetime import datetime

fmt = "%Y-%m-%d %H:%M:%S"

cst_struct = datetime.fromtimestamp(stp_int, cst_tz)  # 先转为结构化时间
cst = cst_struct.strftime(fmt)
import pyzt

fmt = "%Y-%m-%d %H:%M:%S"

cst_struct = datetime.fromtimestamp(stp_int, cst_tz)  # 先转为结构化时间
cst = cst_struct.strftime(fmt)

CST转时间戳

import time

fmt = "%Y-%m-%d %H:%M:%S"

cst_struct = time.strptime(cst, fmt)  # 先转为结构化时间
stp = time.mktime(cst_struct)
stp_int = int(stp)

其它(待整理)

# 时间戳转本地时区结构化时间
x = time.localtime()
time.mktime(x)  # 逆操作

# 时间戳转UTC时区结构化时间
x = time.gmtime()
calendar.timegm(x)  # 逆操作
"""
<class 'time.struct_time'>
time.struct_time(tm_year=2021, tm_mon=1, tm_mday=3, tm_hour=19, tm_min=17, tm_sec=8, tm_wday=6, tm_yday=3, tm_isdst=0)

x[0]  # 2021
x.tm_wday  # 6 表示周日
x.tm_yday  # 一年中的第几天
x.tm_isdst  # 是否夏令时
"""

# 结构化转ctime格式
time.asctime(x)
# 时间戳转ctime格式
x = time.ctime()  # <class 'str'> 'Sun Jan  3 20:25:19 2021'
# 结构化时间转格式化时间
x = time.strftime("%Y-%m-%d %H:%M:%S")  # <class 'str'> '2021-01-03 19:18:55'

x.strptime(strftime)  # strftime格式化转结构化时间
  • datetime
# 服务器所在时区的当前时间
datetime.datetime.now()  # <class 'datetime.datetime'>

# 标准UTC当前时间
datetime.datetime.utcnow()  # <class 'datetime.datetime'>