0.000 000 001 毫秒 = 1皮秒
0.000 001 毫秒 = 1纳秒
0.001 毫秒 = 1微秒
1000 毫秒 = 1秒
一秒等于1000毫秒,等于10的12次方皮秒。
获取当前日期
>>> import datetime
>>> print(datetime.date.today())
2018-11-22
获取当前日期时间
>>> from datetime import datetime
>>> now = datetime.now() # 获取当前datetime
>>> print(now) # 输出如下日期-时间(精确到微秒,小数点后6位)
2018-10-31 20:55:24.723183
>>> print(type(now))
<class 'datetime.datetime'>
注意到datetime是模块,datetime模块还包含一个datetime类,通过from datetime import datetime导入的才是datetime这个类。
如果仅导入import datetime,则必须引用全名datetime.datetime。
datetime.now()返回当前日期和时间,其类型是datetime。
datetime.datetime.now().date():返回当前日期时间的日期部分;
datetime.datetime.now().time():返回当前日期时间的时间部分。
now()接收一个参数tz,也就是timezone时区,如果这个参数不存在时,它的表现等同于today()
获取指定日期和时间
要指定某个日期和时间,我们直接用参数构造一个datetime:
>>> from datetime import datetime
>>> dt = datetime(2020, 10, 1 , 0 , 0) # 用指定日期时间创建datetime
>>> print(dt)
2020-10-01 00:00:00
datetime类型和str类型相互转换
datetim转为str
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2018, 11, 6, 10, 19, 11, 571810)
>>> strf = now.strftime('%Y-%m-%d %H:%M:%S') # 转换
>>> strf
'2018-11-06 10:19:11'
>>> type(strf)
<class 'str'>
str转为datetime
>>> strp = datetime.datetime.strptime(strf, '%Y-%m-%d %H:%M:%S') # 转换
>>> strp
datetime.datetime(2018, 11, 6, 10, 19, 11)
>>> type(strp)
<class 'datetime.datetime'>
>>> datetime.datetime.strptime("2019-01-01", '%Y-%m-%d').date()
datetime.date(2019, 1, 1)
datetime加减
对日期和时间进行加减实际上就是把datetime往后或往前计算,得到新的datetime。加减可以直接用+和-运算符,不过需要导入timedelta这个类:
>>> from datetime import datetime, timedelta
>>> now = datetime.now()
>>> now
datetime.datetime(2015, 5, 18, 16, 57, 3, 540997)
>>> now + timedelta(hours=10)
datetime.datetime(2015, 5, 19, 2, 57, 3, 540997)
>>> now - timedelta(days=1)
datetime.datetime(2015, 5, 17, 16, 57, 3, 540997)
>>> now + timedelta(days=2, hours=12)
datetime.datetime(2015, 5, 21, 4, 57, 3, 540997)
使用timedelta你可以很容易地算出前几天和后几天的时刻。
>>> from datetime import datetime
>>> a1 = datetime.now()
>>> a1
datetime.datetime(2018, 10, 31, 20, 43, 59, 93209)
>>> a2 = datetime.now()
>>> a2
datetime.datetime(2018, 10, 31, 20, 44, 22, 511396)
>>> a = a2 - a1
>>> a
datetime.timedelta(0, 23, 418187)
>>> a.seconds
23
>>> dir(a)
['__abs__', '__add__', '__bool__', '__class__', '__delattr__',
'__dir__', '__divmod__', '__doc__', '__eq__', '__floordiv__',
'__format__', '__ge__', '__getattribute__', '__gt__',
'__hash__', '__init__', '__init_subclass__', '__le__',
'__lt__', '__mod__', '__mul__', '__ne__', '__neg__',
'__new__', '__pos__', '__radd__', '__rdivmod__',
'__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__',
'__rmod__', '__rmul__', '__rsub__', '__rtruediv__',
'__setattr__', '__sizeof__', '__str__', '__sub__',
'__subclasshook__', '__truediv__',
'days', 'max', 'microseconds', 'min', 'resolution',
'seconds', 'total_seconds']
python的格式化符号
时间和日期格式化符号说明:
# 常用
%y # 两位数的年份表示(00-99)
%Y # 四位数的年份表示(000-9999)
%m # 月份(01-12)
%d # 月内中的一天(0-31)
%H # 24小时制小时数(0-23)
%I # 12小时制小时数(01-12)
%M # 分钟数(00=59)
%S # 秒(00-59)
# 扩展
%a # 本地简化星期名称
%A # 本地完整星期名称
%b # 本地简化的月份名称
%B # 本地完整的月份名称
%c # 本地相应的日期表示和时间表示
%j # 年内的一天(001-366)
%p # 本地A.M.或P.M.的等价符
%U # 一年中的星期数(00-53)星期天为星期的开始
%w # 星期(0-6),星期天为星期的开始
%W # 一年中的星期数(00-53)星期一为星期的开始
%x # 本地相应的日期表示
%X # 本地相应的时间表示
%Z # 当前时区的名称
%% # %号本身