文章目录
作者:小猪快跑
基础数学&计算数学,从事优化领域6年+,主要研究方向:MIP求解器、整数规划、随机规划、智能优化算法
python3 的时区是一个很容易出错的地方。本篇将从原理层面剖析时区概念,让读者真正学懂时区,不踩坑。
如有错误,欢迎指正。如有更好的算法,也欢迎交流!!!——@小猪快跑
相关文献
- datetime — Basic date and time types — Python 3.12.4 documentation
- 简述时区问题复杂性来源(Python 版) - 知乎 (zhihu.com)
当前时间
from datetime import datetime
print(datetime.now())
# 2024-07-12 14:39:59.531525
前一天日期、后一天日期
from datetime import datetime, timedelta
dt = datetime(2024, 1, 1)
dt + timedelta(1)
# datetime.datetime(2024, 1, 2, 0, 0)
dt - timedelta(1)
# datetime.datetime(2023, 12, 31, 0, 0)
东八区(北京)时间
import pytz
from datetime import datetime
print(datetime(2024, 1, 1, tzinfo=pytz.timezone('Etc/GMT-8')))
# 2024-01-01 00:00:00+08:00
时间戳转换
datetime -> str
import pytz
from datetime import datetime
dt = datetime(2024, 1, 1, tzinfo=pytz.timezone('Etc/GMT-8'))
fmt = '%Y-%m-%d %H:%M:%S%z'
dt.strftime(fmt)
# 2024-01-01 00:00:00+0800
fmt = '%a %d %b %Y, %I:%M%p'
dt.strftime(fmt)
# Mon 01 Jan 2024, 12:00AM
fmt = '%d/%m/%y %H:%M:%S.%f'
dt.strftime(fmt)
# 01/01/24 00:00:00.000000
'The {1} is {0:%d}, the {2} is {0:%B}, the {3} is {0:%I:%M%p}.'.format(dt, "day", "month", "time")
# 'The day is 01, the month is January, the time is 12:00AM.'
str -> datetime
from datetime import datetime
datetime.strptime("21/11/06 16:30", "%d/%m/%y %H:%M")
# datetime.datetime(2006, 11, 21, 16, 30)
datetime -> timestamp(时间戳)
from datetime import datetime
dt = datetime(2024, 1, 1)
dt.timestamp()
# 1704038400.0
timestamp -> datetime
from datetime import datetime
datetime.fromtimestamp(1704038400)
# datetime.datetime(2024, 1, 1, 0, 0)
下面列出了 1989 年 C 标准所要求的所有格式代码,这些代码可在所有使用标准 C 实现的平台上运行。
指令 | 含义 |
---|