datetime 对象可以打印精确的当前日期和时间:
In [1]: from datetime import datetime
In [2]: datetime.utcnow() # 获得格林威治时间,即伦敦时间,比北京时间慢 8 小时
Out[2]: datetime.datetime(2018, 2, 20, 16, 53, 30, 587768)
In [3]: datetime.now() # 获得本地时间,即北京时间
Out[3]: datetime.datetime(2018, 2, 21, 0, 53, 41, 794014)
In [4]: print(datetime.now()) # 用 print 格式化打印样式
2018-02-21 01:02:20.425024
In [5]: datetime.now()
Out[5]: datetime.datetime(2018, 3, 12, 13, 17, 37, 771038)
In [6]: datetime.now().date() # 取日期
Out[6]: datetime.date(2018, 3, 12)
In [7]: datetime.now().time() # 取时间
Out[7]: datetime.time(13, 17, 54, 87407)
In [8]: print(datetime.now().date())
2018-03-12
In [8]: print(datetime.now().time())
13:18:08.385321
用 striptime
方法将字符串转换为 datetime 数据类型:
In [12]: type(datetime.now())
Out[12]: datetime.datetime
In [13]: s = '2018-02-21 Kobe 01#:02:20'
# 格式化字符串,使之转换为 datetime 数据类型
In [14]: d = datetime.strptime(s, '%Y-%m-%d Kobe %H#:%M:%S')
In [15]: d
Out[15]: datetime.datetime(2018, 2, 21, 1, 2, 20)
In [16]: print(d)
2018-02-21 01:02:20
In [17]: type(d)
Out[17]: datetime.datetime
用 strftime
方法将 datetime 数据类型转换为字符串:
In [26]: d
Out[26]: datetime.datetime(2018, 2, 21, 1, 2, 20)
# %a 简化英文星期名称
# %m 月份(01-12)
# %d 月中的一天(0-31)
In [27]: s = d.strftime('%a %m %d %H:%M:%S')
In [28]: s
Out[28]: 'Wed 02 21 01:02:20'
用 timedelta
方法加减日期时间:
In [53]: from datetime import timedelta
In [54]: now = datetime.now()
In [55]: now
Out[55]: datetime.datetime(2018, 2, 21, 1, 51, 19, 90276)
# 参数包括 days、hours、seconds 等
# 所有参数均为可选参数,且默认都是 0,参数值可以是整数、浮点数、正数或负数
In [56]: now + timedelta(days=1)
Out[56]: datetime.datetime(2018, 2, 22, 1, 51, 19, 90276)
In [57]: now + timedelta(days=3, hours=-1.5)
Out[57]: datetime.datetime(2018, 2, 24, 0, 21, 19, 90276)
In [58]: now - timedelta(days=-3, hours=1.5)
Out[58]: datetime.datetime(2018, 2, 24, 0, 21, 19, 90276)