在python中,通常有三种方式来表达时间
1.时间戳(timestamp)
2.格式化的时间字符串(format time)
3.元祖(struct_time),其中有9个元素,分表代表年、月、日、时、分、秒、weekday、一年中第几天、是否为夏令时
time用法
# -*- coding:utf-8 -*-
import time
print time.time() # 打印当前时间,时间戳
print time.localtime() # 打印当前时间,时间元祖
print time.gmtime() # 打印当前时间,时间元祖
print time.localtime(time.time()) # 打印当前时间,时间元祖
print time.gmtime(time.time()) # 打印当前时间,时间元祖
print time.localtime().tm_year # 打印当前时间的年
print time.strftime("%Y-%m-%d %H:%M:%S") # 打印当前时间,时间格式化
print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) # 打印当前时间,时间格式化
print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())) # 打印当前时间,时间格式化
print time.mktime(time.localtime()) # 元祖格式转字符串
print time.strptime(time.strftime("%Y-%m-%d %H:%M:%S"), '%Y-%m-%d %X') # 时间格式化转时间元祖
print time.asctime(time.localtime()) # 生成固定格式,Thu Aug 20 23:39:47 2020
print time.ctime(time.time()) # 生成固定格式
# time时间加减,加减单位以秒为单位
print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()+3600))
输出结果:
1597939235.43
time.struct_time(tm_year=2020, tm_mon=8, tm_mday=21, tm_hour=0, tm_min=0, tm_sec=35, tm_wday=4, tm_yday=234, tm_isdst=0)
time.struct_time(tm_year=2020, tm_mon=8, tm_mday=20, tm_hour=16, tm_min=0, tm_sec=35, tm_wday=3, tm_yday=233, tm_isdst=0)
time.struct_time(tm_year=2020, tm_mon=8, tm_mday=21, tm_hour=0, tm_min=0, tm_sec=35, tm_wday=4, tm_yday=234, tm_isdst=0)
time.struct_time(tm_year=2020, tm_mon=8, tm_mday=20, tm_hour=16, tm_min=0, tm_sec=35, tm_wday=3, tm_yday=233, tm_isdst=0)
2020
2020-08-21 00:00:35
2020-08-21 00:00:35
2020-08-21 00:00:35
1597939235.0
time.struct_time(tm_year=2020, tm_mon=8, tm_mday=21, tm_hour=0, tm_min=0, tm_sec=35, tm_wday=4, tm_yday=234, tm_isdst=-1)
Fri Aug 21 00:00:35 2020
Fri Aug 21 00:00:35 2020
2020-08-21 01:00:35
datetime用法
datetime模块重新封装了time模块,提供的类有:date,time,datetime,timedelta,tzinfo
-
date类
print 'date.max:', date.max # 支持最晚的日期 print 'date.min:', date.min # 支持最早的日期 print 'date.today():', date.today() # 当前日期 print 'date.fromtimestamp():', date.fromtimestamp(time.time()) # 时间戳转日期 print '当前日期的年:', date.today().year # 获取日期的年 print 'timetuple():', date.today().timetuple() # 将日期转为日期元祖 print date.today().weekday() # 打印日期为星期几 print date.today().isoweekday() # 打印日期为星期几,算法跟上面的有点区别 print date.today().isocalendar() # 返回格式如(year,month,day)的元组; print date.today().isoformat() # 返回格式如'YYYY-MM-DD’的字符串; print date.today().strftime("%Y-%m-%d") #返回格式如'YYYY-MM-DD’的字符串; print date.today().replace(day = 27)
-
time类
tm = datetime.time(10,23,10) # time对象 print 'tm:', tm print 'hour: %d, minute: %d, second: %d, microsecond: %d' % (tm.hour, tm.minute, tm.second, tm.microsecond) #时、分、秒、微秒; tm1 = tm.replace(hour=20) # 替换时间 print 'tm1:', tm1 print 'isoformat():', tm.isoformat() # 格式化时间 print 'strftime()', tm.strftime("%X") # 格式化时
-
datetime类,datetime相当于date和time结合起来
print 'datetime.max:', datetime.max print 'datetime.min:', datetime.min print 'datetime.resolution:', datetime.resolution print 'today():', datetime.today() # 打印当前日期+时间 print 'now():', datetime.now() # 打印当前日期+时间 print 'utcnow():', datetime.utcnow() # 格林威治时间 print 'fromtimestamp(tmstmp):', datetime.fromtimestamp(time.time()) # 打印当前日期+时间 print 'utcfromtimestamp(tmstmp):', datetime.utcfromtimestamp(time.time()) print datetime.strptime("2020-08-21 00:39:35", "%Y-%m-%d %H:%M:%S") # 将格式字符串转换为datetime对象; print datetime.now().time() # 获取time对象 print datetime.now().replace(2023) # 替换日期年 print datetime.now().timetuple() # 将当期日期转为元祖 print datetime.now().weekday() # 日期为星期几 print datetime.now().isoformat() # 将日期格式化 print datetime.now().ctime() # 固定格式 print datetime.now().strftime("%Y-%m-%d %H:%M:%S")
-
timedelta,时间加减(tips:使用timedelta可以很方便的在日期上做天days,小时hour,分钟,秒,毫秒,微妙的时间计算,如果要计算月份则需要另外的办法。)
dt = datetime.now() #日期减一天 dt1 = dt + timedelta(days=-1)#昨天 dt2 = dt - timedelta(days=1)#昨天 dt3 = dt + timedelta(days=1)#明天 delta_obj = dt3-dt print type(delta_obj),delta_obj#<type 'datetime.timedelta'> 1 day, 0:00:00 print delta_obj.days ,delta_obj.total_seconds()#1 86400.0