time 模块
一 time模块的时间表现格式
a、timestamp时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量
b、struct_time时间元组,共有九个元素组。
c、format time 格式化时间,已格式化的结构使时间更具可读性。包括自定义格式和固定格式。
时间格式转换导图
二 互相转换实例
import time
# 1.时间戳 t = time.time() # 获取当前时间戳 ---> 1553049266.159761 st = int(t) # 秒级时间戳 ---> 1553049298 mst = int(round(t * 1000)) # 毫秒级时间戳 ---> 1553049298371 nowTime = lambda:int(round(t * 1000)) print(nowTime()) # 毫秒级时间戳,基于lambda ---> 1553049298371
# 2.时间元组 time.struct_time(tm_year=2019, tm_mon=3, tm_mday=20, tm_hour=10, tm_min=54, tm_sec=58, tm_wday=2, tm_yday=79, tm_isdst=0)
time.localtime() # 时间元组,默认为当前时间
time.localtime(1553050658.185377) # 将时间戳转换为时间元组
# 3.可视化时间 Wed Mar 20 11:00:12 2019
time.ctime() # 可视化的时间,默认为当前时间
time.ctime(1553050658.185377) # 将时间戳转换为可视化的时间格式
# 4.时间元组 ---> 时间戳
time.mktime((2019,3,20,11,5,57,2,79,0)) # 1553051157.0
# 5.时间元组 ---> 可视化时间 'Wed Mar 20 11:11:03 2019'
time.asctime() # 可视化的时间,默认为当前时间
time.asctime((2019,3,20,11,5,57,2,79,0)) # 将时间元组转换为可视化的时间格式
time.asctime(time.localtime(1553051598.7391522)) # 将时间戳转换为时间元组后,再转化为可视化时间
# 6.时间元组 ---> 知道格式的可视化时间 : time.strftime(要转换成的格式, 时间元组)
time.strftime("%Y-%m-%d %X")
time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) # 2019-03-20 11:17:43
# 7.指定格式的可视化时间 ---> 时间元组 : time.strptime(时间字符串, 时间字符串的格式)
print(time.strptime('2019-03-20 11:17:43', '%Y-%m-%d %H:%M:%S'))
# 8.浮点数秒数,用于衡量不同程序的耗时,前后两次调用的时间差
time.clock()
# 9.格林威治时间
time.gmtime()
time.gmtime(time.time())
# 10.时间元组的属性-值
属性 值
tm_year(年) 比如1999
tm_mon(月) 1 - 12
tm_mday(日) 1 - 31
tm_hour(时) 0 - 23
tm_min(分) 0 - 59
tm_sec(秒) 0 - 61
tm_wday(weekday) 0 - 6(0表示周日)
tm_yday(一年中的第几天) 1 - 366
tm_isdst(是否是夏令时) 默认为-1
strftime : 时间对象 ---> 字符串对象 ; strptime : 字符串对象 ---> 时间对象
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')) # 将日期格式化输出 ---> 2019-03-20 10:55:42
datetime 模块
datatime模块重新封装了time模块,提供的类有:date,time,datetime,timedelta,tzinfo。
一. date类
# 1.静态方法和字段
date.max :date对象所能表示的最大日期。datetime.date(9999, 12, 31)
date.min : date对象所能表示的最小日期。datetime.date(1, 1, 1)
date.resolution :date对象表示日期的最小单位,这里是天
date.today() :返回一个'表示当前本地日期'的date对象
date.fromtimestamp(timestamp) :根据给定的时间戮,返回一个date对象
# 2.方法和属性
d1 = date(2011,6,3) # 创建date对象 d1.year、date.month、date.day # date对象的年、月、日属性 d2 = d1.replace(year, month, day) # 生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性。(原有对象仍保持不变) d1.timetuple() # 返回日期对应的时间元组(time.struct_time)对象; d1.weekday() # 返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此类推; d1.isoweekday() # 返回weekday,如果是星期一,返回1;如果是星期2,返回2,以此类推; d1.isocalendar() # 返回格式:(year,month,day)的元组,eg : (2019,3,20) d1.isoformat() # 返回格式如'YYYY-MM-DD’的字符串;'2019-03-03' d1.strftime("%Y-%m-%d %X") # 和time模块format相同。
二. time类
# 1.静态方法和字段
time.min :time类所能表示的最小时间。datetime.time(0, 0)
time.max : time类所能表示的最大时间。datetime.time(23, 59, 59, 999999)
time.resolution :time对象表示时间的最小单位,这里是1微秒
# 2.方法和属性
t1 = datetime.time(10,23,15) # 创建time对象
t1.hour、t1.minute、t1.second、t1.microsecond # time对象的时、分、秒、微秒属性 t1.tzinfo # 时区信息 t1.replace([ hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] ) # 创建一个新的时间对象,用参数指定的时、分、秒、微秒代替原有对象中的属性(原有对象仍保持不变); t1.isoformat() # 返回型如"HH:MM:SS"格式的字符串表示; t1.strftime(fmt) # 同time模块中的format;
三. datetime类 : 相当于date&time的结合体
# 1.静态方法和字段
注: from datetime import datetime
datetime.today() # 返回一个表示当前本地时间的datetime对象; datetime.now([tz]) # 返回一个表示当前本地时间的datetime对象,如果提供了参数tz,则获取tz参数所指时区的本地时间; datetime.utcnow() # 返回一个当前utc时间的datetime对象;格林威治时间 datetime.fromtimestamp(timestamp[, tz]) # 根据时间戮创建一个datetime对象,参数tz指定时区信息; datetime.utcfromtimestamp(timestamp) # 根据时间戮创建一个datetime对象; datetime.combine(date, time) # 根据date和time,创建一个datetime对象; datetime.strptime(date_string, format) # 将格式字符串转换为datetime对象;
# 2.方法和属性
dt = datetime.now() # datetime对象 dt.year、month、day、hour、minute、second、microsecond、tzinfo # datetime对象的年,月,日,时、分、秒、微秒属性
dt.date() # 获取date对象
dt.time() # 获取time对象
dt. replace ([ year[ , month[ , day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] ] ] ]) # 创建新的date对象
dt. timetuple () dt. utctimetuple () dt. toordinal () dt. weekday () dt. isocalendar () dt. isoformat ([ sep] ) dt. ctime () # 返回一个日期时间的C格式字符串,等效于time.ctime(time.mktime(dt.timetuple())); dt. strftime (format)
四. timedelta类 : 时间加减
from datetime import * dt = datetime.now() # 日期减一天
dt1 = dt + timedelta(days=-1) # 昨天
dt2 = dt - timedelta(days=1) # 昨天
dt3 = dt + timedelta(days=1) # 明天
delta_obj = dt3-dt # datetime.timedelta(0, 86284, 691779)
print(type(delta_obj)) # <type 'datetime.timedelta'> 1 day, 0:00:00
print(delta_obj.days ,delta_obj.total_seconds()) # 0, 86284.691779
五. tzinfo时区类
from datetime import datetime, tzinfo,timedelta """ tzinfo是关于时区信息的类 tzinfo是一个抽象类,所以不能直接被实例化 """ class UTC(tzinfo): """UTC""" def __init__(self,offset = 0): self._offset = offset def utcoffset(self, dt): return timedelta(hours=self._offset) def tzname(self, dt): return "UTC +%s" % self._offset def dst(self, dt): return timedelta(hours=self._offset) #北京时间 beijing = datetime(2011,11,11,0,0,0,tzinfo = UTC(8)) print("beijing time:",beijing) #曼谷时间 bangkok = datetime(2011,11,11,0,0,0,tzinfo = UTC(7)) print("bangkok time",bangkok) #北京时间转成曼谷时间 print("beijing-time to bangkok-time:",beijing.astimezone(UTC(7))) #计算时间差时也会考虑时区的问题 timespan = beijing - bangkok print("时差:",timespan) #Output================== # beijing time: 2011-11-11 00:00:00+08:00 # bangkok time 2011-11-11 00:00:00+07:00 # beijing-time to bangkok-time: 2011-11-10 23:00:00+07:00 # 时差: -1 day, 23:00:00
python中时间日期格式化符号: %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 当前时区的名称 %% %号本身
转载: https://blog.csdn.net/ni357103403/article/details/51579027
符号 说明 例子
%a 英文星期的简写 Mon
%A 英文星期的完整编写 Monday
%b 英文月份的简写 Jun
%B 英文月份的完整编写 June
%c 显示本地的日期和时间 06/30/14 01:03:17
%I 小时数,取值在01~12之间 01
%j 显示从本年第一天开始到当天的天数 181
%w (week) 显示今天是星期几,0表示星期天 1
%W 显示当天属于本年的第几周,星期一作为一周的第一天进行计算 26 ==> 26*7 = 182天
%x 本地的当天日期 06/30/14
%X 本地的当天时间 01:09:54
%y 年份,取值在00~99之间 14
%Y 年份完整的拼写 2014
%m (month) 月份,取值在01~12之间 06
%d (day) 日期数,取值在1~31之间 30
%H (Hour) 小时数,取值在00~23之间 01
%M (Minute) 分钟数,取值在01~59之间 04
%S 秒 58