下面介绍最基本3个对象的最基本用法。首先,从datetime模块导入3个对象。
In [1]: from datetime import date,time,datetime
构造一个日期date实例,2020年9月1日:
In [2]: date(2020,9,1)
Out[2]: datetime.date(2020, 9, 1)
构造一个时间time实例,10点10分0秒:
In [3]: time(10,10,0)
Out[3]: datetime.time(10, 10)
构造一个日期+时间的完整datetime实例,2020年9月1日 10点10分0秒:
In [4]: datetime(2020,9,1,10,10,10)
Out[4]: datetime.datetime(2020, 9, 1, 10, 10, 10)
自己构造时间没什么意义,更有意义的是打印当前时间,比如此时程序启动打印下时间,如果程序可能运行十几天,很明显使用日期+时间的完整datetime实例。
此方法归属于datetime类上的方法,所以无须构造datetime实例,直接如下:
datetime.today() # datetime类的today方法
Out[5]: datetime.datetime(2020, 8, 28, 22, 0, 47, 439509)
打印结果显示年月日时分秒毫秒 还可以使用类方法now:
In [6]: datetime.now()
Out[6]: datetime.datetime(2020, 8, 28, 22, 1, 28, 737166)
直接打印当前时间,返回日期+时间的字符串结果:
In [7]: print(datetime.now())
2020-08-28 22:02:57.217572
如果我们不想显示毫秒,这就涉及到日期+时间的打印格式化问题。使用datetime类方法strftime(string format time),用法如下:
In [8]: datetime.strftime(datetime.now(),’%Y-%m-%d %H:%M:%S’)
Out[8]: ‘2020-08-28 22:06:20’
这就涉及到打印格式化字符,常用的几个:
字符 意义
%Y 完整的年份
%y 去掉世纪的年份
%m 月份(01 - 12)
%d 一个月中的第几天(01 - 31)
%H 一天中的第几个小时(24小时制,00 - 23)
%M 分钟数(00 - 59)
%S 秒(01 - 61)
%w 一个星期中的第几天(0 - 6,0是星期天)
%Z 时区的名字(如果不存在为空字符)
如果读入一个时间列,此时type为str,为了对此作时间运算,需要将其转化为datetime,使用strptime(string parse time),它是datetime的类方法:
In [11]: datetime.strptime(‘2020-08-28 22:06:20’,’%Y-%m-%d %H:%M:%S’)
Out[11]: datetime.datetime(2020, 8, 28, 22, 6, 20)
字符型日期+时间要想正确转化为datetime对象,字符串和格式必须要匹配,否则会抛错:
In [13]: datetime.strptime(‘2020-08-28 22:06:20’,\
‘%Y/%m/%d %H:%M:%S’)
ValueError: time data ‘2020-08-28 22:06:20’
does not match format ‘%Y/%m/%d %H:%M:%S’