datetime
datetime
是Python处理日期和时间的模块, 需要用到里面的datetime
类.
获取当前日期和时间
datetime.now()
会返回一个datetime
类的实例. 这个对象中有一个__repr__
方法, 详情参见__str__
方法, 可以用于打印这个对象, 内容是它所代表的时间.
例子
定义:
执行:
获取指定日期和时间
要指定datetime
类的实例为某一个日期和时间, 可以往构造函数datetime()
里面传入参数.
例子
定义:
执行:
时间戳
笔记
UNIX时间, 或者POSIX时间为UNIX或类UNIX系统使用的时间表示方式, 从UTC1970年1月1日0时0分0秒起至现在的总秒数. 全球各地的计算机在任意时刻的时间戳都是相同的.
datetime
对象转时间戳
时间戳可以通过在datetime
类的实例上调用timestamp()
方法得到.
例子
定义:
执行:
时间戳转datetime
对象
要将时间戳转为datetime
类的实例, 可以使用类方法fromtimestamp([timestamp])
.
例子
定义:
执行:
格式化字符串
格式化字符串转为datetime
对象
将格式化字符串转换为datetime
类的实例, 需要用到类方法strptime()
, 该方法会根据字符串生成一个实例并返回.
例子
定义:
from datetime import datetime
cday = datetime.strptime('2015-6-1 18:19:59', '%Y-%m-%d %H:%M:%S')
print(cday)
执行:
datetime
对象转为格式化字符串
将datetime
类的实例转化为格式化字符串, 需要用到实例的方法strftime()
, 该方法会把实例格式化为字符串显示给用户.
例子
定义:
执行:
datetime
对象加减时间
对日期和时间进行加减实际上就是把datetime
类的实例往后或者往前计算, 得到新的datetime
类对象. 加减可以直接用+
, -
运算符, 需要导入timedelta
类.
例子
定义:
from datetime import datetime, timedelta
now = datetime.now()
print(now)
now_after = now + timedelta(hours=10)
now_before = now - timedelta(days=1, hours=12)
print(now_after)
print(now_before)
执行:
时区
自定义时区信息
datetime
对象有一个时区的属性tzinfo
, 默认为None
, 这类对象被称为Naive datetime
对象, 表示不包含时区信息. 我们可以通过replace(tzinfo=UTC)
将其转化为Aware datetime
对象, 包含时区信息为UTC时区.
此外, 我们也可以用datetime
模块下的timezone
类创建一个时区对象, 将该对象作为参数传递给replace(tzinfo=[instance])
. 那么产生的datetime
对象包含的时区信息为我们的自定义时区.
例子
定义:
from datetime import datetime, timedelta, timezone
tz_utc_8_8 = timezone(timedelta(hours=8, minutes=8))
now = datetime.now()
print(now)
dt = now.replace(tzinfo=tz_utc_8_8)
print(dt)
执行:
注意
自定义时区只是附加了时区信息, 并不会改变当前datetime
显示的时间.
时区转化
可以利用datetime
对象的astimezone()
方法切换时区. 这么做的而前提是这个datetime
对象是一个Aware datetime
对象, 即其时区属性tzinfo
需要被定义.
例子
定义:
from datetime import datetime, timedelta, timezone
tz_utc_8 = timezone(timedelta(hours=8))
now = datetime.now()
print(now)
dt = now.replace(tzinfo=tz_utc_8)
print(dt)
tz_utc_9 = timezone(timedelta(hours=9))
dt_9 = dt.astimezone(tz_utc_9)
print(dt_9)
执行:
-
Datetime. (n.d.). Retrieved June 18, 2024, from https://www.liaoxuefeng.com/wiki/1016959663602400/1017648783851616 ↩