获取当前日期和时间
>>> from datetime import datetime
>>> now=datetime.now()
>>> print(now)
2018-07-31 15:30:48.205399
>>> print(type(now))
<class 'datetime.datetime'>
获取指定某个日期和时间
>>> from datetime import datetime
>>> dt=datetime(2018,7,31,15,32)
>>> print(dt)
2018-07-31 15:32:00
datetime转换为timestamp
>>> from datetime import datetime
>>> dt=datetime(2018,7,31,15,32)
>>> print(dt)
2018-07-31 15:32:00
>>> dt.timestamp()
1533022320.0
timestamp转换为datetime
>>> from datetime import datetime
>>> t=1533021480.0
>>> print(datetime.fromtimestamp(t))#本地时间
2018-07-31 15:18:00
>>> print(datetime.utcfromtimestamp(t))#UTC标准时间
2018-07-31 07:18:00
str转换为datetime
>>> from datetime import datetime
>>> cday=datetime.strptime('2018-7-31 14:42:00','%Y-%m-%d %H:%M:%S')
>>> print(cday)
2018-07-31 14:42:00
datetime转换为str
>>> from datetime import datetime
>>> now=datetime.now()
>>> print(now.strftime('%a, %b %d %H:%M'))
Tue, Jul 31 15:46
datetime加减
>>> from datetime import datetime, timedelta
>>> now=datetime.now()
>>> now
datetime.datetime(2018, 7, 31, 15, 48, 17, 52625)
>>> now+timedelta(hours=10)
datetime.datetime(2018, 8, 1, 1, 48, 17, 52625)
>>> now-timedelta(days=1)
datetime.datetime(2018, 7, 30, 15, 48, 17, 52625)
>>> now+timedelta(days=2,hours=12)
datetime.datetime(2018, 8, 3, 3, 48, 17, 52625)
本地时间转换为UTC时间
>>> from datetime import datetime,timedelta,timezone
>>> tz_utc_8=timezone(timedelta(hours=8))#创建时区UTC+8:00
>>> now=datetime.now()
>>> now
datetime.datetime(2018, 7, 31, 16, 26, 34, 662144)
>>> dt=now.replace(tzinfo=tz_utc_8)#强制设置为UTC+8:00,如果系统恰好是UTC+8:00,那么没问题,
#否则不能强制设置UTC+8:00
>>> dt
datetime.datetime(2018, 7, 31, 16, 26, 34, 662144, tzinfo=datetime.timezone(datetime.timedelta(seconds=28800)))
时区转换
>>> utc_dt=datetime.utcnow().replace(tzinfo=timezone.utc)
>>> print(utc_dt)
2018-07-31 08:32:40.472939+00:00
>>> bj_dt=utc_dt.astimezone(timezone(timedelta(hours=8)))#astimezone()将转换时区为北京时间
>>> print(bj_dt)
2018-07-31 16:32:40.472939+08:00
>>> tokyo_dt=utc_dt.astimezone(timezone(timedelta(hours=9)))#astimezone()将转换时区为东京时间
>>> print(tokyo_dt)
2018-07-31 17:32:40.472939+09:00
>>> tokyo_dt2=bj_dt.astimezone(timezone(timedelta(hours=9)))#将bi_dt转换为东京时间
>>> print(tokyo_dt2)
2018-07-31 17:32:40.472939+09:00
datetime表示的时间需要时区信息才能确定一个特定的时间,否则只能视为本地时间
如果要存储datetime,最佳方法是将其转换为timestamp再存储,因为timestamp的值与时区完全无关