Python 程序能用很多方式處理日期和時間,轉換日期格式是一個常見的功能。
Python 提供了一個 time 和 calendar 模塊可以用於格式化日期和時間。
時間間隔是以秒為單位的浮點小數。
每個時間戳都以自從1970年1月1日午夜(歷元)經過了多長時間來表示。
Python 的 time 模塊下有很多函數可以轉換常見日期格式。如函數time.time()用於獲取當前時間戳,
python中時間日期格式化符號:
# 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 當前時區的名稱 # %% %號本身
代碼實例
# 獲取時間戳 time1 = time.time() print(time1) # 獲取本地時間 localTime = time.localtime(time.time()) # 格式化本地時間 localTimeStrs = time.strftime("%Y-%m-%d %H:%M:%S",localTime) print(localTime) print(localTimeStrs) # 計算時間差 import datetime day1 = datetime.datetime(2018,5,16) day2 = datetime.datetime(2018,4,16) # 計算指定時間的間隔 print((day1-day2).days) # 獲取當前時間 nowTime = datetime.datetime.now() print("nowTime: ",nowTime) # 當前指定時間 # 獲取當前年份 print(nowTime.year) print(nowTime.day) print(nowTime.month) print(nowTime.hour) print(nowTime.minute) print(nowTime.second) # 當前時間往前推29天計算日期,也就是近30天的其實范圍 beforeTime = nowTime - datetime.timedelta(days=29) # 往后推就使用 + 號,當然還可以使用 hours(小時) 、minutes(分鍾)、seconds(秒)等單位運算。 print("beforeTime: ",beforeTime) # 結果輸出 # 1526451775.666749 # time.struct_time(tm_year=2018, tm_mon=5, tm_mday=16, tm_hour=14, tm_min=22, tm_sec=55, tm_wday=2, tm_yday=136, tm_isdst=0) # 2018-05-16 14:22:55 # 30 # nowTime: 2018-05-16 14:22:55.670309 # beforeTime: 2018-04-17 14:22:55.670309
日歷(Calendar)模塊
此模塊的函數都是日歷相關的,例如打印某月的字符月歷。
import calendar cal = calendar.month(2018,2) print(cal) February 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
星期一是默認的每周第一天,星期天是默認的最后一天。更改設置需調用calendar.setfirstweekday()函數。模塊包含了以下內置函數:
序號 | 函數及描述 |
---|---|
1 | calendar.calendar(year,w=2,l=1,c=6) 返回一個多行字符串格式的year年年歷,3個月一行,間隔距離為c。 每日寬度間隔為w字符。每行長度為21* W+18+2* C。l是每星期行數。 |
2 | calendar.firstweekday( ) 返回當前每周起始日期的設置。默認情況下,首次載入caendar模塊時返回0,即星期一。 |
3 | calendar.isleap(year) 是閏年返回True,否則為false。 |
4 | calendar.leapdays(y1,y2) 返回在Y1,Y2兩年之間的閏年總數。 |
5 | calendar.month(year,month,w=2,l=1) 返回一個多行字符串格式的year年month月日歷,兩行標題,一周一行。每日寬度間隔為w字符。每行的長度為7* w+6。l是每星期的行數。 |
6 | calendar.monthcalendar(year,month) 返回一個整數的單層嵌套列表。每個子列表裝載代表一個星期的整數。Year年month月外的日期都設為0;范圍內的日子都由該月第幾日表示,從1開始。 |
7 | calendar.monthrange(year,month) 返回兩個整數。第一個是該月的星期幾的日期碼,第二個是該月的日期碼。日從0(星期一)到6(星期日);月從1到12。 |
8 | calendar.prcal(year,w=2,l=1,c=6) 相當於 print calendar.calendar(year,w,l,c). |
9 | calendar.prmonth(year,month,w=2,l=1) 相當於 print calendar.calendar(year,w,l,c)。 |
10 | calendar.setfirstweekday(weekday) 設置每周的起始日期碼。0(星期一)到6(星期日)。 |
11 | calendar.timegm(tupletime) 和time.gmtime相反:接受一個時間元組形式,返回該時刻的時間戳(1970紀元后經過的浮點秒數)。 |
12 | calendar.weekday(year,month,day) 返回給定日期的日期碼。0(星期一)到6(星期日)。月份為 1(一月) 到 12(12月)。 |