datetime模块的作用
datetime模块包含一些函数和类,用户完成日期和时间的解析、格式化和算术运算等。
1、自定义时,分,秒,毫秒,时区参数实例一个time对象的示例
importdatetime
t= datetime.time(1, 2, 3)print(t)print('hour :', t.hour)print('minute :', t.minute)print('second :', t.second)print('microsecond:', t.microsecond)print('tzinfo :', t.tzinfo)
datetime_time.py
运行效果
01:02:03hour :1minute :2second :3microsecond: 0
tzinfo : None
2、打印时间最大值和最小值
importdatetimeprint('时间最小值 :', datetime.time.min)print('时间最大值 :', datetime.time.max)print('时间最小值微秒级别 :', datetime.time.resolution)
datetime_time_minmax.py
运行效果
时间最小值 : 00:00:00时间最大值 :23:59:59.999999时间最小值微秒级别 : 0:00:00.000001
3、利用datetime模块获取当前的年,月,日
importdatetime
today=datetime.date.today()print('今天时间:', today)print('ordinal:', today.toordinal())print('Year :', today.year)print('Mon :', today.month)print('Day :', today.day)print('ctime :', today.ctime())
tt=today.timetuple()print('tuple : tm_year =', tt.tm_year)print('tm_mon =', tt.tm_mon)print('tm_mday =', tt.tm_mday)print('tm_hour =', tt.tm_hour)print('tm_min =', tt.tm_min)print('tm_sec =', tt.tm_sec)print('tm_wday =', tt.tm_wday)print('tm_yday =', tt.tm_yday)print('tm_isdst =', tt.tm_isdst)
datetime_date.py
运行效果
今天时间: 2020-05-20ordinal:737565Year :2020Mon :5Day :20ctime : Wed May20 00:00:00 2020tuple : tm_year= 2020tm_mon= 5tm_mday= 20tm_hour=0
tm_min=0
tm_sec=0
tm_wday= 2tm_yday= 141tm_isdst= -1
4、天数每天加1和格式化时间戳的示例
importdatetimeimporttime
o= 733478
print('o :', o)print('fromordinal(o) :', datetime.date.fromordinal(o))
t=time.time()print('t :', t)print('fromtimestamp(t):', datetime.date.fromtimestamp(t))
datetime_date_fromordinal.py
运行效果
o : 733478fromordinal(o) :2009-03-12t :1589960551.3368747fromtimestamp(t):2020-05-20
5、打印日期的最大值,最小值的示例
importdatetimeprint('日期最小值 :', datetime.date.min)print('日期最大值 :', datetime.date.max)print('精确到时分秒 :', datetime.date.resolution)
datetime_date_minmax.py
运行效果
日期最小值 : 0001-01-01日期最大值 :9999-12-31精确到时分秒 :1 day, 0:00:00
6、日期时间的替换
importdatetime
d1= datetime.date(2008, 3, 29)print('d1:', d1.ctime())
d2= d1.replace(year=2009)print('d2:', d2.ctime())
datetime_date_replace.py
运行效果
d1: Sat Mar 29 00:00:00 2008d2: Sun Mar29 00:00:00 2009
7、生成日期时间可算术运算的对象
importdatetimeprint('microseconds:', datetime.timedelta(microseconds=1))print('milliseconds:', datetime.timedelta(milliseconds=1))print('seconds :', datetime.timedelta(seconds=1))print('minutes :', datetime.timedelta(minutes=1))print('hours :', datetime.timedelta(hours=1))print('days :', datetime.timedelta(days=1))print('weeks :', datetime.timedelta(weeks=1))
datetime_timedelta.py
运行效果
microseconds: 0:00:00.000001milliseconds: 0:00:00.001000seconds : 0:00:01minutes : 0:01:00hours :1:00:00days :1 day, 0:00:00weeks :7 days, 0:00:00
8、获取指定时间段的秒数
importdatetimefor delta in [datetime.timedelta(microseconds=1),
datetime.timedelta(milliseconds=1),
datetime.timedelta(seconds=1),
datetime.timedelta(minutes=1),
datetime.timedelta(hours=1),
datetime.timedelta(days=1),
datetime.timedelta(weeks=1),
]:print('{:15} = {:8} seconds'.format(
str(delta), delta.total_seconds())
)
datetime_timedelta_total_seconds.py
运行效果
0:00:00.000001 = 1e-06seconds
0:00:00.001000 = 0.001seconds
0:00:01 = 1.0seconds
0:01:00 = 60.0seconds1:00:00 = 3600.0seconds1 day, 0:00:00 = 86400.0seconds7 days, 0:00:00 = 604800.0 seconds
9、时间的算术运算
importdatetime
today=datetime.date.today()print('Today :', today)
one_day= datetime.timedelta(days=1)print('One day :', one_day)
yesterday= today -one_dayprint('Yesterday:', yesterday)
tomorrow= today +one_dayprint('Tomorrow :', tomorrow)print()print('tomorrow - yesterday:', tomorrow -yesterday)print('yesterday - tomorrow:', yesterday - tomorrow)
datetime_date_math.py
运行效果
Today : 2020-05-20One day :1 day, 0:00:00Yesterday:2020-05-19Tomorrow :2020-05-21tomorrow- yesterday: 2 days, 0:00:00yesterday- tomorrow: -2 days, 0:00:00
10、时间的算术浮点运算
importdatetime
one_day= datetime.timedelta(days=1)print('1 day :', one_day)print('5 days :', one_day * 5)print('1.5 days :', one_day * 1.5)print('1/4 day :', one_day / 4)#assume an hour for lunch
work_day = datetime.timedelta(hours=7)
meeting_length= datetime.timedelta(hours=1)print('meetings per day :', work_day / meeting_length)
datetime_timedelta_math.py
运行效果
1 day : 1 day, 0:00:00
5 days : 5 days, 0:00:00
1.5 days : 1 day, 12:00:00
1/4 day : 6:00:00meetings per day :7.0
11、时间和日期的比较
importdatetimeimporttimeprint('Times:')
t1= datetime.time(12, 55, 0)print('t1:', t1)
t2= datetime.time(13, 5, 0)print('t2:', t2)print('t1 < t2:', t1
d1=datetime.date.today()print('d1:', d1)
d2= datetime.date.today() + datetime.timedelta(days=1)print('d2:', d2)print('d1 > d2:', d1 > d2)
datetime_comparing.py
运行效果
Times:
t1:12:55:00t2:13:05:00t1
Dates:
d1:2020-05-21d2:2020-05-22d1> d2: False
12、通过反射获取年,月,日,时,分,秒的示例
importdatetimeprint('Now :', datetime.datetime.now())print('Today :', datetime.datetime.today())print('UTC Now:', datetime.datetime.utcnow())print()
FIELDS=['year', 'month', 'day','hour', 'minute', 'second','microsecond',
]
d=datetime.datetime.now()for attr inFIELDS:print('{:15}: {}'.format(attr, getattr(d, attr)))
datetime_datetime.py
运行效果
Now : 2020-05-21 09:43:57.311893Today :2020-05-21 09:43:57.311894UTC Now:2020-05-21 01:43:57.311893year :2020month :5day :21hour :9minute :43second :57microsecond :311893
13、时间和日期的拼接示例
1 importdatetime2
3 t = datetime.time(1, 2, 3)4 print('t :', t)5
6 d =datetime.date.today()7 print('d :', d)8
9 dt =datetime.datetime.combine(d, t)10 print('dt:', dt)
datetime_datetime_combine.py
运行效果
t : 01:02:03d :2020-05-21dt:2020-05-21 01:02:03
14、日期时间的格式化
importdatetime
format= "%Y-%m-%d %H:%M:%S"today=datetime.datetime.today()print('ISO :', today)
s=today.strftime(format)print('strftime:', s)
d=datetime.datetime.strptime(s, format)print('strptime:', d.strftime(format))
datetime_datetime_strptime.py
运行效果
ISO : 2020-05-21 09:50:46.448841strftime:2020-05-21 09:50:46strptime:2020-05-21 09:50:46
15、格式化的介绍
importdatetime
today=datetime.datetime.today()print('ISO :', today)print('format(): {:%Y-%m-%d %H:%M:%S}'.format(today))
datetime_format.py
运行效果
ISO : 2020-05-21 10:02:14.044698format():2020-05-21 10:02:14
符号注释示例
%a
缩写的星期几
'Wed'
%A
完整的星期几
'Wednesday'
%w
星期几的编号:0(星期天)到6(星期六)
'3'
%d
当月哪一天
'13'
%b
缩写的月份名
'Jan'
%B
完整的月份名
'January'
%m
当年哪个月
'01'
%y
不加世纪编号的年份
'16'
%Y
加世纪编号的年份
'2016'
%H
24小时制的小时数
'17'
%I
12小时制的小时数
'05'
%p
AM/PM
'PM'
%M
分钟
'00'
%S
秒
'00'
%f
微秒
'000000'
%z
区分时区的日期时间对象的UTC偏移
'-0500'
%Z
时区名
'EST'
%j
当年的哪一天
'013'
%W
当年的哪一周
'02'
%c
当前本地化环境的日期和时间表示
'Wed Jan 13 17:00:00 2016'
%x
当前本地化环境的日期表示
'01/13/16'
%X
当前本地化环境的时间表示
'17:00:00'
%%
字面量%字符
'%'
16、时区的自动转换示例
importdatetime
min6= datetime.timezone(datetime.timedelta(hours=-6))
plus6= datetime.timezone(datetime.timedelta(hours=6))
d=datetime.datetime.now(min6)print(min6, ':', d)print(datetime.timezone.utc, ':',
d.astimezone(datetime.timezone.utc))print(plus6, ':', d.astimezone(plus6))#转换为当前系统时区
d_system =d.astimezone()print(d_system.tzinfo, ':', d_system)
datetime_timezone.py
运行效果
UTC-06:00 : 2020-05-20 20:15:04.716839-06:00UTC :2020-05-21 02:15:04.716839+00:00UTC+06:00 : 2020-05-21 08:15:04.716839+06:00EST :2020-05-21 10:15:04.716839+08:00
17、时间戳转时间的示例
importdatetime
ts= 1590017732ret=datetime.datetime.fromtimestamp(ts)print(ret)
运行效果
2020-05-21 07:35:32
18、时间转时间戳的示例
importdatetime
d= '2020-05-21 07:35:32'ret=datetime.datetime.fromisoformat(d).timestamp()print(ret)
运行效果
1590017732.0