python程序能用很多方式处理日期和时间,转换日期格式是一种常见的功能。python提供了一个time和calendar模块可以用于格式化日期和时间,这里将会讲到time模块、datetime模块和calendar模块
自从1970年1月1日午夜(历元)经过了多长时间来表示,时间间隔是以秒为单位的浮点小数
格林尼治时间,世界标准时间,在中国为UTC+8
夏令时是一种节约能源而人为规定的时间制度,在夏季调快一小时
获取当前时间的时间戳
import time
print(time.time()) #1560774836.743502
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:否
功能:将时间元组转为时间戳
import time
time1 = time.time()
lt = time.localtime(time1)
time2 = time.mktime(lt)
print(time2) #1560858580.0
将时间戳转为时间字符串
import time
time1 = time.time()
print(time.ctime(time1))
#Mon Jun 17 20:58:24 2019
将时间元组转为时间字符串,国外的表示方式
import time
time1 = time.time()
lt = time.localtime(time1)
asct = time.asctime(lt)
print(asct)
#Mon Jun 17 20:54:59 2019
功能:将元组格式化为指定的时间字符串的格式。
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 本地相应日期
功能:将时间字符串格式化为时间元组
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)
功能:休眠,单位s
import time
time.sleep(1)
功能:以浮点数的方式计算当前cpu的耗时,通常情况下成对使用。
import time
time.clock()
time1 = time.time()
lt = time.localtime(time1)
time2 = time.mktime(lt)
print(time.clock())
#1.9385413958410304e-05
datetime比time高级了不少,可以理解为datetime基于time进行了封装,提供了更多的实用的函数,datetime的接口更加的直观,更容易调用
功能:获取当前系统时间,返回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)) #
功能:将指定的时间转为datetime对象
from datetime import datetime
dt = datetime(2019,6,16,10,10,10)
print(dt) #2019-06-16 10:10:10
功能:将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)) #
功能:两个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)) #
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模块有很广泛的方法用来处理年历和月历
功能:返回指定年份的日历(以字符串的形式)
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
功能:返回指定月份的日历(以字符串的形式)
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
功能:判断指定年份是否为闰年,若是则返回True,否则返回False
import calendar
print(calendar.isleap(2100)) #False
功能:返回[year1,year2)中闰年的个数
import calendar
print(calendar.leapdays(2000,2019)) #5
功能:返回该月第一天的星期码与该月的天数,以元组的形式返回。
import calendar
print(calendar.monthrange(2019,6)) #(5, 30)
功能:返回某月以每一周为元素的序列,若这天没有则使用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]]
功能:返回指定日期的星期码
import calendar
print(calendar.weekday(2019,6,18)) #1