前言
- qbit 经常用到当前时间和相对时间,用来统计程序执行的效率,简单记一下,便于 copy。
ISO 8601是国际标准化组织(ISO)制定的日期和时间的表示方法,全称为《数据存储和交换形式·信息交换·日期和时间的表示方法》。目前,ISO 8601是全球通用的日期和时间格式标准,它定义了日期和时间的表示方法,包括年、月、日、时、分、秒等1。除了ISO 8601之外,还有一些其他的日期和时间格式标准,例如RFC 3339、RFC 2822等2。
# 东八区标准时间格式示例 2023-04-05T17:20:34+08
模块
相对时间
>>> import time
# 相对时间
>>> startTime = time.time()
>>> '%.2fs' % (time.time() - startTime)
'24.51s'
# 本地时间
>>> time.localtime()
time.struct_time(tm_year=2020, tm_mon=2, tm_mday=24,
tm_hour=19, tm_min=40, tm_sec=49,
tm_wday=0, tm_yday=55, tm_isdst=0)
# UTC 时间
>>> time.gmtime()
time.struct_time(tm_year=2020, tm_mon=2, tm_mday=24,
tm_hour=11, tm_min=40, tm_sec=51,
tm_wday=0, tm_yday=55, tm_isdst=0)
格式化当前时间
# 格式化当前时间
>>> time.strftime('%Y-%m-%d %H:%M:%S')
'2020-02-24 19:44:16'
# 格式化本地时间
>>> time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
Out[70]: '2020-02-24 19:44:18'
# 格式化 UTC 时间
>>> time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime())
'2020-02-24 11:44:19'
时间戳与时间的转换
# 将时间戳转化为时间
>>> time.localtime(1521793044.7850916)
time.struct_time(tm_year=2018, tm_mon=3, tm_mday=23, tm_hour=16,
tm_min=17, tm_sec=24, tm_wday=4, tm_yday=82, tm_isdst=0)
# 将时间戳转化为可读字符串
>>> time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(1521793044.7850916))
'2018-03-23 16:17:24'
>>> time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
'2018-03-23 16:17:29'
# 将时间转化为时间戳
>>> time.strptime('2016-05-05 20:28:54', '%Y-%m-%d %H:%M:%S')
time.struct_time(tm_year=2016, tm_mon=5, tm_mday=5, tm_hour=20, tm_min=28,
tm_sec=54, tm_wday=3, tm_yday=126, tm_isdst=-1)
>>> time.mktime(time.strptime('2016-05-05 20:28:54', '%Y-%m-%d %H:%M:%S'))
1462451334.0
# 可读字符串 -> 时间戳 -> 可读字符串
>>> time.strftime('%Y-%m-%d %H:%M:%S',
time.strptime('2018-03-23 16:17:24', '%Y-%m-%d %H:%M:%S'))
'2018-03-23 16:17:24'
时区
from datetime import datetime, timedelta, timezone
# 0 区
dt0 = datetime.utcnow().replace(tzinfo=timezone.utc)
print(dt0.strftime('%Y-%m-%d %H:%M:%S')) # 2020-02-24 12:37:08
# 东八区
dt8 = dt0.astimezone(timezone(timedelta(hours=8)))
dt8 = datetime.now(timezone(timedelta(hours=8)))
print(dt8.strftime('%Y-%m-%d %H:%M:%S')) # 2020-02-24 20:37:08
# 时间转时间戳
timestamp0 = datetime.timestamp(dt0)
print(timestamp0) # 1582547828.433725(时间戳不变)
timestamp8 = datetime.timestamp(dt8)
print(timestamp8) # 1582547828.433725(时间戳不变)
# 将时间戳按东八区时间打印(2020-02-24 20:37:08)
print(
datetime.fromtimestamp(1582547828.433725)
.astimezone(timezone(timedelta(hours=8)))
.strftime('%Y-%m-%d %H:%M:%S')
)
day of week
now = datetime.now(timezone(timedelta(hours=8)))
now.weekday() # 周一(0)~ 周日(6)
now.isoweekday() # 周一(1)~ 周日(7)
本文出自 qbit snap
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。