# 時間模塊
'''
UTC(世界協調時間):格林尼治天文時間,世界標準時間,在中國來講是UTC+8
DST(夏令時):是一種節約能源而人爲規定時間制度,在夏季調快1個小時
時間的表示形式:
一、時間戳
以整型或浮點型表示時間的一個以秒爲單位的時間間隔。這個時間間隔的基礎值是從1970年1月1日領帶開始算起
二、元組
一種Python的數據結構表示,這個元組有9個整型內容
year
month
day
hours
minutes
seconds
weekday
Julia day
flag (1 或 -1 或0) 0表示正常時間 1 表示DST時間 -1須要判斷
三、格式化字符串
%a 本地(locale)簡化星期名稱
%A 本地完整星期名稱
%b 本地簡化月份名稱
%B 本地完整月份名稱
%c 本地相應的日期和時間表示
%d 一個月中的第幾天(01 - 31)
%H 一天中的第幾個小時(24小時制,00 - 23)
%I 第幾個小時(12小時制,01 - 12)
%j 一年中的第幾天(001 - 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 時區的名字(若是不存在爲空字符)
%% ‘%’字符
1 #__author:"吉*佳" 2 #date: 2018/10/22 0022 3 #function: 4 5 import time 6 7 # 時間模塊 8 9 ''' 10 UTC(世界協調時間):格林尼治天文時間,世界標準時間,在中國來講是UTC+8 11 DST(夏令時):是一種節約能源而人爲規定時間制度,在夏季調快1個小時 12 13 14 15 時間的表示形式: 16 一、時間戳 17 以整型或浮點型表示時間的一個以秒爲單位的時間間隔。這個時間間隔的基礎值是從1970年1月1日領帶開始算起 18 二、元組 19 一種Python的數據結構表示,這個元組有9個整型內容 20 year 21 month 22 day 23 hours 24 minutes 25 seconds 26 weekday 27 Julia day 28 flag (1 或 -1 或0) 0表示正常時間 1 表示DST時間 -1須要判斷 29 30 三、格式化字符串 31 %a 本地(locale)簡化星期名稱 32 %A 本地完整星期名稱 33 %b 本地簡化月份名稱 34 %B 本地完整月份名稱 35 %c 本地相應的日期和時間表示 36 %d 一個月中的第幾天(01 - 31) 37 %H 一天中的第幾個小時(24小時制,00 - 23) 38 %I 第幾個小時(12小時制,01 - 12) 39 %j 一年中的第幾天(001 - 366) 40 %m 月份(01 - 12) 41 %M 分鐘數(00 - 59) 42 %p 本地am或者pm的相應符 43 %S 秒(01 - 61) 44 %U 一年中的星期數。(00 - 53星期天是一個星期的開始。)第一個星期天以前的全部天數都放在第0周 45 %w 一個星期中的第幾天(0 - 6,0是星期天) 46 %W 和%U基本相同,不一樣的是%W以星期一爲一個星期的開始。 47 %x 本地相應日期 48 %X 本地相應時間 49 %y 去掉世紀的年份(00 - 99) 50 %Y 完整的年份 51 %Z 時區的名字(若是不存在爲空字符) 52 %% ‘%’字符 53 54 2017-07-28 14:49:30 55 ''' 56 57 # 1 返回當前時間的時間戳,浮點數形式,不須要參數 58 c = time.time() 59 print(c) 60 ''' 61 輸出:時間戳 62 1540214592.0838583 63 ''' 64 65 #將時間戳轉爲UTC時間元組(是世界標準時間,不是北京時間) 66 t = time.gmtime(c) 67 print(t) 68 ''' 69 輸出:世界標準時間 70 time.struct_time(tm_year=2018, tm_mon=10, tm_mday=22, tm_hour=13, tm_min=23, tm_sec=12, tm_wday=0, tm_yday=295, tm_isdst=0) 71 72 ''' 73 74 #將時間戳轉爲本地時間元組 75 b = time.localtime(c) 76 print(b) 77 ''' 78 輸出: 79 time.struct_time(tm_year=2018, tm_mon=10, tm_mday=22, tm_hour=21, tm_min=23, tm_sec=12, tm_wday=0, tm_yday=295, tm_isdst=0) 80 ''' 81 82 83 84 #將本地時間元組轉成時間戳 85 m = time.mktime(b) 86 print(m) 87 ''' 88 輸出: 89 1540216089.0 90 ''' 91 92 93 #將時間元組轉成字符串 94 s = time.asctime(b) 95 print(s) 96 ''' 97 輸出: 98 Mon Oct 22 22:08:17 2018 99 ''' 100 #將時間戳轉爲字符串 time.asctime(time.localtime(time.time())) 101 p = time.ctime(c) 102 print(p) 103 ''' 104 輸出: 105 Mon Oct 22 22:08:17 2018 106 ''' 107 108 #將時間元組轉換成給定格式的字符串,參數2爲時間元組,若是沒有參數2,默認轉當前時間 109 q = time.strftime("%Y-%m-%d %H:%M:%S", b) 110 print(q) 111 print(type(q)) 112 ''' 113 輸出: 114 2018-10-22 22:08:17 115 <class 'str'> 116 ''' 117 118 #將時間字符串轉爲時間元組 119 w = time.strptime(q, "%Y-%m-%d %X") 120 print(w) 121 ''' 122 輸出: 123 time.struct_time(tm_year=2018, tm_mon=10, tm_mday=22, tm_hour=22, tm_min=10, tm_sec=58, tm_wday=0, tm_yday=295, tm_isdst=-1) 124 125 ''' 126 127 128 #延遲一個時間,整型或者浮點型 129 #time.sleep(4) 130 131 132 #返回當前程序的cup執行時間 133 #Unix形同始終返回所有的運行時間 134 #windows從第二次開始,都是以第一個調用此函數的開始間戳做爲基數 135 y1 = time.clock() 136 print("%d" % y1) 137 time.sleep(2) 138 y2 = time.clock() 139 print("%d" % y2) 140 time.sleep(2) 141 y3 = time.clock() 142 print("%d" % y3) 143 144 ''' 145 輸出: 146 0 147 2 148 4 149 150 '''
關於三種形式表示時間上的轉換圖windows
# 好比檢測一個程序運行所花的時間大小 time.clock() sum = 0 for i in range(100000000): sum += i print(time.clock()) ''' 輸出: 23.743988065019252 '''
# datetime 比time 好了不少,提供了更多的接口,更加直觀和容易調用 import datetime # 主要的方法 模塊中的類 datetime 同時有時間和日期 timedelta 用於計算時間的跨度 tzinfo 時區相關 time 時間 date 日期
#__author:"吉*佳" #date: 2018/10/22 0022 #function: # datetime 比time 好了不少,提供了更多的接口,更加直觀和容易調用 import datetime # 主要的方法 ''' 模塊中的類 datetime 同時有時間和日期 timedelta 用於計算時間的跨度 tzinfo 時區相關 time 時間 date 日期 ''' # 使用: # 1 獲取當前時間 nowtime=datetime.datetime.now() print(nowtime) print(type(nowtime)) ''' 輸出: 2018-10-22 22:58:31.973017 <class 'datetime.datetime'> ''' # 2 獲取指定時間 d2 = datetime.datetime(1994,1,10,10,28,25,111) print(d2) ''' 輸出: 1994-01-10 10:28:25.000111 ''' # 3 將以上時間(nowtime)轉化爲 字符串 d3 = nowtime.strftime('%y-%m-%d %H:%M:%S') print(d3) print(type(d3)) d31 = nowtime.strftime('%Y-%m-%d %H:%M:%S') #大Y表示四位的年 print(d31) ''' 輸出: 18-10-22 23:04:35 <class 'str'> 2018-10-22 23:05:48 ''' # 4 將字符串 轉化爲 datetime類型的 d4 = datetime.datetime.strptime(d3,'%y-%m-%d %H:%M:%S') print("d4=",d4) ''' 輸出: d4= 2018-10-22 23:12:14 ''' # 5 datetime型是能夠作加減運算的 d5 = datetime.datetime(1994,1,10,13,25,48,111) d6 = datetime.datetime.now() d= d6-d5 print(d) #打印出間隔的天數和秒數 print(d.days) #打印出間隔的天數 print(d.seconds) #打印出出去整數天外的間隔的秒數 print(type(d)) #所屬的類型是 ''' 輸出: 9051 days, 9:50:06.403529 9051 35406 <class 'datetime.timedelta'> '''
#__author:"吉*佳" #date: 2018/10/22 0022 #function: import calendar # 日曆模塊 # 1 返回指定年內某月的日曆信息 print(calendar.month(2018,10)) ''' 輸出: October 2018 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 ''' # 返回指定某一年的日曆 print(calendar.calendar(2018)) ''' 輸出: 2018 January February March Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 1 2 3 4 1 2 3 4 8 9 10 11 12 13 14 5 6 7 8 9 10 11 5 6 7 8 9 10 11 15 16 17 18 19 20 21 12 13 14 15 16 17 18 12 13 14 15 16 17 18 22 23 24 25 26 27 28 19 20 21 22 23 24 25 19 20 21 22 23 24 25 29 30 31 26 27 28 26 27 28 29 30 31 April May June Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su 1 1 2 3 4 5 6 1 2 3 2 3 4 5 6 7 8 7 8 9 10 11 12 13 4 5 6 7 8 9 10 9 10 11 12 13 14 15 14 15 16 17 18 19 20 11 12 13 14 15 16 17 16 17 18 19 20 21 22 21 22 23 24 25 26 27 18 19 20 21 22 23 24 23 24 25 26 27 28 29 28 29 30 31 25 26 27 28 29 30 30 July August September Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su 1 1 2 3 4 5 1 2 2 3 4 5 6 7 8 6 7 8 9 10 11 12 3 4 5 6 7 8 9 9 10 11 12 13 14 15 13 14 15 16 17 18 19 10 11 12 13 14 15 16 16 17 18 19 20 21 22 20 21 22 23 24 25 26 17 18 19 20 21 22 23 23 24 25 26 27 28 29 27 28 29 30 31 24 25 26 27 28 29 30 30 31 October November December Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 1 2 3 4 1 2 8 9 10 11 12 13 14 5 6 7 8 9 10 11 3 4 5 6 7 8 9 15 16 17 18 19 20 21 12 13 14 15 16 17 18 10 11 12 13 14 15 16 22 23 24 25 26 27 28 19 20 21 22 23 24 25 17 18 19 20 21 22 23 29 30 31 26 27 28 29 30 24 25 26 27 28 29 30 31 ''' # 返回 判斷瑞年與否 print(calendar.isleap(2018)) ''' 輸出: False ''' # 返回這個月的weekday的第一天和月的天數 print(calendar.monthrange(2018,2)) ''' 輸出: (3, 28) 其中3 表明第一天是從週四開始的,28 表明天數 ''' # 返回某個月以每一週爲元素的列表 print(calendar.monthcalendar(2018,6)) ''' 輸出: [[0, 0, 0, 0, 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, 0]] '''