Python提供了time和calendar模块,可以用于格式化日期和时间。
Python中时间间隔是以秒为单位的浮点小数。
每个时间戳都以从1970年1月1日零点之后,经过了多长时间来表示。
获取当前时间戳,使用time模块中的time()函数:
import time
ticks = time.time()
print(ticks)
结果为
1563424770.843349
时间元组
即时间的各种表示方式。
字段 | 例子 | python表示属性 |
四位数年 | 2019 | tm_year |
月 | 1到12 | tm_mon |
日 | 1到31 | tm_mday |
小时 | 0到23 | tm_hour |
分钟 | 0到59 | tm_min |
秒 | 0到60或61 闰秒 | tm_sec |
一周的第几天 | 0到6,0是周一 | tm_wday |
一年的第几日 | 1到366 | tm_yday |
夏令时 | -1,0,1,-1表示是夏令时 | tm_isdst |
获取当前时间
把时间戳获得的时间传递给localtime函数,例如:
import time
ticks = time.time()
localtime = time.localtime(ticks)
print(localtime)
结果为
time.struct_time(tm_year=2019, tm_mon=7, tm_mday=18, tm_hour=12, tm_min=48, tm_sec=30, tm_wday=3, tm_yday=199, tm_isdst=0)
可以看出对应的年份,月份,天,等等信息。
获取格式化的时间
通过asctime()函数可以获得格式化的时间,例如:
import time
ticks = time.time()
localtime = time.localtime(ticks)
localtime = time.asctime(localtime)
print(localtime)
结果为
Thu Jul 18 12:50:43 2019
格式化日期
time模块中的strftime方法可以格式化日期,例如:
localtime = time.localtime()
# 格式化成2016-03-20 11:45:39形式
time1 = time.strftime("%Y-%m-%d %H:%M:%S",localtime)
# 格式化成Sat Mar 28 22:24:24 2016形式
time2 = time.strftime("%a %b %d %H:%M:%S %Y",localtime)
# 将格式字符串转换为时间戳
a = "Sat Mar 28 22:24:24 2016"
time3 = time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y"))
结果为
2019-07-18 12:53:59
Thu Jul 18 12:53:59 2019
1459175064.0
在strftime中常用的时间格式
表示 | 描述 |
%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 | 当前时区的名称 |
获取某月日历
calendar模块可展示日历,例如:
import calendar
cal = calendar.month(2016,1) #输入年份和月份
print(cal)
结果为
January 2016
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 31
Time模块
内置函数
有时间处理的函数和转换时间的函数
表示 | 描述 |
time.asctime([tupletime]) | 接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008" |
time.clock( ) | 用以浮点数计算的秒数返回当前的CPU时间 |
time.localtime([secs]) | 接收时间戳并返回当地时间下的时间元组 |
time.mktime(tupletime) | 接受时间元组并返回时间戳(1970纪元后经过的浮点秒数)。 |
time.sleep(secs) | 推迟调用线程的运行,secs指秒数。 |
time.strftime(fmt[,tupletime]) | 接收以时间元组,并返回以可读字符串表示的当地时间 |
time.strptime(str,fmt='%a %b %d %H:%M:%S %Y') | 根据fmt的格式把一个时间字符串解析为时间元组 |
time.time( ) | 返回当前时间的时间戳 |
日历(Calendar)模块
表示 | 描述 |
calendar.calendar(year,w=2,l=1,c=6) | 返回一个多行字符串格式的year年年历 |
calendar.firstweekday( ) | 返回当前每周起始日期的设置 |
calendar.isleap(year) | 是闰年返回 True,否则为 False。 |
calendar.month(year,month,w=2,l=1) | 返回一个多行字符串格式的year年month月日历 |
calendar.weekday(year,month,day) | 返回给定日期的日期码。0(星期一)到6(星期日)。月份为 1(一月) 到 12(12月)。 |
其他相关模块
datetime模块
pytz模块
dateutil模块