038 Python语法之time、calendar、datetime模块

time模块

  1. 格式化时间只能用字符,不能用中文

初识time

import time

tick = time.time()  # 1970年1月1日到现在的秒数
print(tick)
localtime = time.localtime(tick)
print(localtime) # 本地化时间
acttime = time.asctime(localtime)   # 格式化时间
print(acttime)
ctime = time.ctime()    # 和上面的等价
print(ctime)
print(time.strftime("%Y-%m-%d %H:%M:%S"))   # 格式化时间

# --------------------------
"""
1502433905.8102489
time.struct_time(tm_year=2017, tm_mon=8, tm_mday=11, tm_hour=14, tm_min=45, tm_sec=5, tm_wday=4, tm_yday=223, tm_isdst=0)
Fri Aug 11 14:45:05 2017
Fri Aug 11 14:45:05 2017
2017-08-11 14:52:31
"""

格式化时间

import time
# 格式化成2016-03-20 11:45:39形式
print (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
# 格式化成Sat Mar 28 22:24:24 2016形式
print (time.strftime("%a %b %d %H:%M:%S %Y", time.localtime()))
  
# 将格式字符串转换为时间戳
a = "Sat Mar 28 22:24:24 2016"
print (time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y")))
以上实例输出结果:
2016-04-07 10:29:46
Thu Apr 07 10:29:46 2016
1459175064.0
  1. %y 两位数的年份表示(00-99)
  2. %Y 四位数的年份表示(000-9999)
  3. %m 月份(01-12)
  4. %d 月内中的一天(0-31)
  5. %H 24小时制小时数(0-23)
  6. %I 12小时制小时数(01-12)
  7. %M 分钟数(00=59)
  8. %S 秒(00-59)
  9. %a 本地简化星期名称
  10. %A 本地完整星期名称
  11. %b 本地简化的月份名称
  12. %B 本地完整的月份名称
  13. %c 本地相应的日期表示和时间表示
  14. %j 年内的一天(001-366)
  15. %p 本地A.M.或P.M.的等价符
  16. %U 一年中的星期数(00-53)星期天为星期的开始
  17. %w 星期(0-6),星期天为星期的开始
  18. %W 一年中的星期数(00-53)星期一为星期的开始
  19. %x 本地相应的日期表示
  20. %X 本地相应的时间表示
  21. %Z 当前时区的名称
  22. %% %号本身

一些time方法

time方法 描述
time.altzone() 返回格林威治西部的夏令时地区的偏移秒数
time.asctime(time.localtime()) Thu Apr 7 10:36:20 2016
time.clock() 和time.time()类似,比time.time()精确
time.ctime() Thu Apr 7 10:51:58 2016
time.gmtime(time.time()) 返回一个time元组格林时间
time.localtime(time.time()) 返回一个time元组当地时间
time.mktime(tupletime) 接收一个t=(2016,2,17,17,3,38,1,48,0)返回时间戳
time.sleep(seconds) 时间中止一段时间
time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()) 返回格式化时间2016-04-07 11:18:05
time.strptime(str,fmt='%a %b %d %H:%M:%S %Y') 格式化时间转元组时间
time.time() 返回当前时间戳
time.tzset() 根据环境变量TZ重新初始化时间相关设置

属性

time属性 描述
time.timezone 当地时区距离格林威治的偏移秒数
time.tzname 根据情况的不同而不同的字符串

显示日历

import calendar

cal = calendar.month(2017, 8)  # 打印当前月份的日历
print(type(cal))  # str类型

calendar方法

calendar方法 描述
calendar.calendar(year,w=2,l=1,c=6) 3个月一行,间隔距离为c,每日宽度间隔为w字符。每行长度为21* W+18+2* C。l是每星期行数
calendar.firstweekday() 貌似都是返回0、星期一
calendar.isleap(year) 返回是否闰年True、False
calendar.leapdays(y1,y2) 返回在Y1,Y2两年之间的闰年总数。
calendar.month(year,month,w=2,l=1) 返回一个多行字符串格式的year年month月日历,两行标题,一周一行。每日宽度间隔为w字符。每行的长度为7* w+6。l是每星期的行数。
calendar.monthcalendar(year,month) 返回一个整数的单层嵌套列表。每个子列表装载代表一个星期的整数。Year年month月外的日期都设为0;范围内的日子都由该月第几日表示,从1开始。
calendar.monthrange(year,month) 返回两个整数。第一个是该月的星期几的日期码,第二个是该月的日期码。日从0(星期一)到6(星期日);月从1到12。
calendar.prcal(year,w=2,l=1,c=6) 相当于 print calendar.calendar(year,w,l,c).
calendar.prmonth(year,month,w=2,l=1) 相当于 print calendar.calendar(year,w,l,c)。
calendar.setfirstweekday(weekday) 设置每周的起始日期码。0(星期一)到6(星期日)
calendar.timegm(tupletime) 和time.gmtime相反:接受一个时间元组形式,返回该时刻的时间辍(1970纪元后经过的浮点秒数
calendar.weekday(year,month,day) 返回给定日期的日期码。0(星期一)到6(星期日)月份为 1(一月) 到 12(12月)

datetime模块

  1. 可直接进行时间加减

datetime模块使用

import datetime

date1 = datetime.datetime.now()
print(datetime.datetime.now())  # 当前时间
date2 = datetime.datetime(2017,6,12,3,4,5,34213)    # 创建一个时间
print(date2-date1)  # 计算时间差,重载了-
print((date2-date1).days)   # 计算天数
print((date2-date1).seconds)   # 计算除天之外的秒数


datetime.datetime.strptime("2017-07-05 09:08:07","%Y-%m-%d %H:%M:%S")

# 将当前时间转换成字符串
date4 = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(type(date4))  # str

datetime的方法

  1. datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]]) -- 构造函数,返回一个datetime对象。year, month, day为必选参数
  2. astimezone(...) -- 根据给定的timezone对象,返回转换为本地时区的timezone对象。
  3. combine(...) -- 根据给定date, time对象合并后,返回一个对应值的datetime对象。
  4. ctime(...) -- 返回ctime格式的字符串。
  5. date(...) -- 返回具有相同year, month, day的date对象
  6. dst(...) -- 返回self.tzinfo.dst(self).
  7. fromtimestamp(...) -- 根据时间戳数值,返回一个datetime对象。
  8. isoformat(...) -- 返回ISO 8601格式的字符串,如:YYYY-MM-DDTHH:MM:SS[.mmmmmm][+HH:MM]
  9. now(...) -- 根据给定的时区,返回当地的当前时间。
  10. replace(...) -- 返回一个替换了指定日期时间字段的新datetime对象
  11. strptime(...) -- 根据string, format2个参数,返回一个对应的datetime对象。
  12. time(...) -- 返回一个带有相同time,但没有tzinfo的time对象。
  13. timetuple(...) -- 返回一个时间元素, 等价于time.localtime().
  14. timetz(...) -- 返回一个带有相同time和tzinfo的time对象。
  15. tzname(...) -- 返回self.tzinfo.tzname(self).
  16. utcfromtimestamp(...) -- 返回UTC时间戳的datetime对象,时间戳值为time.time()
  17. utcnow(...) -- 返回UTC当前时间的datetime对象.
  18. utcoffset(...) -- Return self.tzinfo.utcoffset(self).
  19. utctimetuple(...) -- 返回UTC时间元组对象, 等价于time.localtime().

推荐阅读更多精彩内容