1.datetime 模块
为日期和时间处理同时提供了简单和复杂的方法。支持日期和时间算法的同时,实现的重点放在更有效的处理和格式化输出。该模块还支持时区处理:
简单例子:
from datetime import date now = date.today() now Out[9]: datetime.date(2019, 4, 28) now.strftime("%m-%d-%y. %d %b %Y is a %A on the %d day of %B.") Out[10]: '04-28-19. 28 Apr 2019 is a Sunday on the 28 day of April.' birthday = date(1964, 7, 31) age = now - birthday age.days Out[13]: 19994
2. Python 的 time 模块
下有很多函数可以转换常见日期格式。如函数time.time()用于获取当前时间戳, 如下实例:
print time.time() #1556456582.96 dates = time.localtime() print "Date: ", dates#time.struct_time(tm_year=2019, tm_mon=4, tm_mday=28, tm_hour=21, tm_min=3, tm_sec=2, tm_wday=6, tm_yday=118, tm_isdst=0) print str(dates.tm_year)+"年",str(dates.tm_mon)+"月",str(dates.tm_mday)+"日",str(dates.tm_hour)+"时",str(dates.tm_min)+"分",str(dates.tm_sec)+"秒" #2019年 4月 28日 21时 3分 2秒 print "一年中的第"+str(dates.tm_yday)+"天","星期"+str(dates.tm_wday+1)#一年中的第118天 星期7 print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(1556454836))#2019-04-28 20:33:56
python中常用时间日期格式化符号:
%a 本地(local)简化星期名称
%A 本地完整星期名称
%b 本地简化月份名称
%B 本地完整月份名称
%c 本地相应的日期和时间表示
%d 一个月中的第几天(01-31)
%H 一天中的第几个小时(24小时制,00-23)
%l 一天中的第几个小时(12小时制,01-12)
%j 一年中的第几天(01-366)
%m 月份(01-12)
%M 分钟数(00-59)
%p 本地am或者pm的相应符
%S 秒(01-61) %U 一年中的星期数(00-53,星期天是一个星期的开始,第一个星期天之前的所有天数都放在第0周)
%w 一个星期中的第几天(0-6,0是星期天)
%W 和%U基本相同,不同的是%W以星期一为一个星期的开始
%x 本地相应日期
%X 本地相应时间
%y 去掉世纪的年份(00-99)
%Y 完整的年份
%z 用+HHMM或者-HHMM表示距离格林威治的时区偏移(H代表十进制的小时数,M代表十进制的分钟数)
%Z 时区的名字(如果不存在为空字符)
%% %号本身 %p只有与%I配合使用才有效果 当使用strptime()函数时,只有当在这年中的周数和天数被确定的时候%U和%W才会被计算
3.时间戳转换
def timeStampToDate(timeStamp): """ 将时间戳转换为日期格式 :param timeStamp: Long:1556454836 :return:日期:"%Y-%m-%d %H:%M:%S" """ local_time = time.localtime(timeStamp) return time.strftime("%Y-%m-%d %H:%M:%S", local_time) def dateDiff(date1, date2): """ 计算两个日期之间的天数 :param date1:最近的日期 :param date2:远一点的日期 :return:间隔天数 """ d = date1 - date2 return d.days def main(): date1 = date.today() date2 = date(1991, 5, 21) print dateDiff(date1, date2) #10204
4.程序运行时间衡量
--1直接法:
def test_time(): test = [] for i in range(10000000): test.append(i) start = time.time() test_time() end = time.time() print "Program cost:",end - start," seconds"
--包装方法:
def time_fun(func): @wraps(func) def wrapper(*args, **kwargs): start = time.time() result = func(*args, **kwargs) end = time.time() print func.__name__, "cost:", end - start, "seconds!" return result return wrapper @time_fun def test_timefun(): test = [] for i in range(10000000): test.append(i) test_timefun()
test_timefun cost: 1.33599996567 seconds!
5.打印日历
import calendar cal = calendar.month(2019, 4) print "以下输出2019年4月份的日历:" print cal
以下输出2019年4月份的日历:
April 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