Python常用内置模块之时间日期模块(time、datetime和calendar)

python程序能用很多方式处理日期和时间,转换日期格式是一种常见的功能。python提供了一个time和calendar模块可以用于格式化日期和时间,这里将会讲到time模块、datetime模块和calendar模块

名词解释
时间戳

自从1970年1月1日午夜(历元)经过了多长时间来表示,时间间隔是以秒为单位的浮点小数

UTC

格林尼治时间,世界标准时间,在中国为UTC+8

DST

夏令时是一种节约能源而人为规定的时间制度,在夏季调快一小时

time模块
1. time.time()

获取当前时间的时间戳

import time

print(time.time())		#1560774836.743502
2. time.gmtime(seconds)和time.localtime(seconds)

time.gmtime(seconds)功能:将时间戳转为UTC时间,以元组的形式返回
time.localtime(seconds)功能:将时间戳转为本地时间

import time

time1 = time.time()
print(time.gmtime(time1))
print(time.localtime(time1))

#time.struct_time(tm_year=2019,tm_mon=6,tm_mday=17,tm_hour=12,tm_min=37,tm_sec=36,tm_wday=0,tm_yday=168,tm_isdst=0)
#time.struct_time(tm_year=2019,tm_mon=6,tm_mday=17,tm_hour=20,tm_min=46,tm_sec=10,tm_wday=0,tm_yday=168,tm_isdst=0)

其中

tm_year:年
tm_mon:月
tm_mday:日
tm_hour:时
tm_min:分
tm_sec:秒
tm_wday:星期码【0-6】,0表示周一
tm_yday:当前是本年的第几天
tm_isdst:是否为夏令时,1:是  0:否
3. time.mktime(p_tuple)

功能:将时间元组转为时间戳

import time

time1 = time.time()
lt = time.localtime(time1)
time2 = time.mktime(lt)
print(time2)	#1560858580.0
4. time.ctime(seconds)

将时间戳转为时间字符串

import time

time1 = time.time()
print(time.ctime(time1))

#Mon Jun 17 20:58:24 2019
5. time.asctime(p_tuple)

将时间元组转为时间字符串,国外的表示方式

import time

time1 = time.time()
lt = time.localtime(time1)
asct = time.asctime(lt)
print(asct)

#Mon Jun 17 20:54:59 2019
6. time.strftime(format,p_tuple)

功能:将元组格式化为指定的时间字符串的格式。

import time

time1 = time.time()
lt = time.localtime(time1)
strt = time.strftime("%Y-%m-%d %H:%M:%S",lt)
strt2 = time.strftime("%Y-%m-%d %X",lt)
strt3 = time.strftime("%x %X",lt)
print(strt)     #2019-06-18 19:27:33
print(strt2)    #2019-06-18 19:27:33
print(strt3)    #06/18/19 19:27:33

其中

%Y	完整的年份
%m	月份(01 - 12)
%M	分钟数(00 - 59)
%d  一个月中的第几天(01 - 31) 
%S  秒(01 - 61)
%H	一天中的第几个小时(24小时制,00 - 23)	
%X	本地相应时间
%x	本地相应日期
7. time.strptime(string,format)

功能:将时间字符串格式化为时间元组

import time

time1 = time.time()
lt = time.localtime(time1)
strt2 = time.strftime("%Y-%m-%d %X",lt)
t1 = time.strptime(strt2,"%Y-%m-%d %X")
print(t1)

#time.struct_time(tm_year=2019,tm_mon=6,tm_mday=18,tm_hour=19,tm_min=31,tm_sec=53,tm_wday=1,tm_yday=169,tm_isdst=-1)
8. time.sleep(seconds)

功能:休眠,单位s

import time

time.sleep(1)
9. time.clock()

功能:以浮点数的方式计算当前cpu的耗时,通常情况下成对使用。

import time

time.clock()
time1 = time.time()
lt = time.localtime(time1)
time2 = time.mktime(lt)
print(time.clock())
#1.9385413958410304e-05
datetime模块

datetime比time高级了不少,可以理解为datetime基于time进行了封装,提供了更多的实用的函数,datetime的接口更加的直观,更容易调用

1. now()

功能:获取当前系统时间,返回datetime类型

import datetime

nowtime = datetime.datetime.now()
print(nowtime)		#2019-06-18 20:19:27.898537

当然也可以这样写:

from datetime import datetime

nowtime = datetime.now()
print(nowtime)			#2019-06-18 20:20:22.630667
print(type(nowtime))	#<class 'datetime.datetime'>
2. datetime(year,month,day,hour,minute,seconds)

功能:将指定的时间转为datetime对象

from datetime import datetime

dt = datetime(2019,6,16,10,10,10)
print(dt)       #2019-06-16 10:10:10
3.datetime.strftime(fmt)

功能:将datetime对象格式化为时间字符串

from datetime import datetime

dt = datetime.now()
strdt = dt.strftime("%Y-%m-%d %X")
print(strdt)       #2019-06-18 20:29:39
print(type(strdt))  #<class 'str'>
4. datetime = datetime1 - datetime2

功能:两个datetime对象相减返回一个时间间隔对象

from datetime import datetime

dt = datetime.now()
dt2 = datetime(2019,6,16,10,10,10)
dtime = dt-dt2
print(dtime)        #2 days, 10:22:45.615735
print(type(dtime))  #<class 'datetime.timedelta'>
5. datetime.days和datetime.seconds

days:两个时间相隔的天数
seconds:除天数之外剩余的秒数

from datetime import datetime

dt = datetime.now()
dt2 = datetime(2019,6,16,10,10,10)
dtime = dt-dt2
print(dtime)            #2 days, 10:25:38.645632
print(dtime.days)       #2
print(dtime.seconds)    #37538
calendar模块

calendar模块有很广泛的方法用来处理年历和月历

1. calendar.calendar(year)

功能:返回指定年份的日历(以字符串的形式)

import calendar

print(calendar.calendar(2019))

运行结果如下:

                                  2019

      January                   February                   March
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
    1  2  3  4  5  6                   1  2  3                   1  2  3
 7  8  9 10 11 12 13       4  5  6  7  8  9 10       4  5  6  7  8  9 10
14 15 16 17 18 19 20      11 12 13 14 15 16 17      11 12 13 14 15 16 17
21 22 23 24 25 26 27      18 19 20 21 22 23 24      18 19 20 21 22 23 24
28 29 30 31               25 26 27 28               25 26 27 28 29 30 31
2. calendar.month(year,mon)

功能:返回指定月份的日历(以字符串的形式)

import calendar

print(calendar.month(2019,6))

运行结果如下:

     June 2019
Mo Tu We Th Fr Sa Su
                1  2
 3  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
3. calendar.isleap(year)

功能:判断指定年份是否为闰年,若是则返回True,否则返回False

import calendar

print(calendar.isleap(2100))       #False
4. calendar.leapdays(year1,year2)

功能:返回[year1,year2)中闰年的个数

import calendar

print(calendar.leapdays(2000,2019)) #5
5. calendar.monthrange(year,mon)

功能:返回该月第一天的星期码与该月的天数,以元组的形式返回。

import calendar

print(calendar.monthrange(2019,6))  #(5, 30)
6. calendar.monthcalendar(year,mon)

功能:返回某月以每一周为元素的序列,若这天没有则使用0来进行占位

import calendar

print(calendar.monthcalendar(2019,6))

#[[0,0,0,0,0,1,2],[3,4,5,6,7,8,9],[10,11,12,13,14,15,16],[17,18,19,20,21,22,23],[24,25,26,27,28,29,30]]
7. calendar.weekday(year,mon,day)

功能:返回指定日期的星期码

import calendar

print(calendar.weekday(2019,6,18))  #1

猜你喜欢

转载自blog.csdn.net/TaoismHuang/article/details/92705924