1. 時間戳
1.1時間戳簡介
在正式講解時間的相關函數之前,我們必須先一個概念: 時間戳 。本文中特指unix
時間戳。
時間戳Timestamp是指在一連串的數據中加入辨識文字,如時間或者日期等,用以保障本地數據更新順序和遠程的一致。
unix
時間戳是從1970年1月1日(UTC/GMT的午夜)開始所經過的秒數,不考慮閏秒。1970-01-01就是經常我們在MySQL中時間為空的時候,轉化空的時間戳之后得到的時間。一個小時表示為UNIX時間戳格式為:3600秒;一天表示為UNIX時間戳為86400秒,閏秒不計算。具體的對照表如下:
1.2時間戳轉化網站
下面介紹幾個時間戳和具體時間之間相互轉化的網站:
1、站長工具:https://tool.chinaz.com/tools/unixtime.aspx
2、在線工具:https://tool.lu/timestamp/
3、Json在線解析:https://www.sojson.com/unixtime.html
4、Unix時間戳在線轉換(菜鳥工具):https://c.runoob.com/front-end/852
5、北京時間(時間與時間戳互換工具):http://www.beijing-time.org/shijianchuo/
介紹完時間戳的基本知識,下面重點講解3個與時間和日期相關的Python庫:
- calendar
- time
- datetime
2.calendar
calendar
的中文意思是"日歷",所以它其實適合進行日期,尤其是以日歷的形式展示。
2.1模塊內容
下面舉例說明:
2.2calendar
我們顯示即將過去2020年的日歷,使用默認的參數:
import calendar
year = calendar.calendar(2020)
print(year)
改變參數再來顯示一次:
year = calendar.calendar(2020,w=3,l=1,c=8)
print(year)
我們發現整個日歷變寬了,而且星期的英文也是3個字母來顯示的,解釋一下3個參數的含義:
- c:每月間隔距離
- w:每日寬度間隔
- l:每星期行數
其中每行長度為:21*w+18+2*c
,3個月一行
最后,看看即將到來的2021年日歷:
2.3isleap(year)
該函數的作用是 判斷某個年份到底是不是閏年 。如果是則返回True,否則返回的是False。
普通年份能夠被4整除,但是不能被100整除,稱之為普通閏年
年份是整百數的,必須能夠被400整除,稱之為世紀閏年
2.4leapdays(y1,y2)
判斷兩個年份之間有多少個閏年 ,包含y1,但是不包含y2,類似Python切片中的包含頭部不包含尾部
2.5month(year,month,w=2,l=1)
該函數返回的是year
年的month
月的日歷,只有兩行標題,一周一行。每日間隔寬度為w個字符,每行的長度為7*w + 6
,其中l是每星期的行數
首先看看默認效果;
接下來我們改變w和l兩個參數:
1、改變w
,我們發現星期的表示變成了3個字母;同時每天之間的間隔變寬了(左右間隔)
2、改變參數l
,我們發現每個星期之前的間隔(上下)變寬了
2.6monthcalendar(year,month)
通過列表的形式返回year年month月的日歷,列表中還是列表形式。每個子列表是一個星期。 如果沒有本月的日期則用0表示 。每個子列表都是從星期1開始的,特點概括如下:
- 每個子列表代表的是一個星期
- 從星期一到星期日,沒有出現在本月的日期用0代替
我們還是以2020年12月份為例:
和上面的日歷進行對比,我們發現:出現0的位置的確是沒有出現在12月份中
我們再看看2020年3月份的日歷:
2.7monthrange(year,month)
該函數返回的結果是一個元組,元組中有兩個數值(a,b)
- 數值a代表的是該月從星期幾開始;規定6代表星期天,取值為0-6
- 數值b代表該月總共有多少天
通過一個例子來講解,還是以2020年12月份為例:
結果中的1表示12月份從星期2開始(0-6,6代表星期日),該月總共31天
2.8weekday(y,m,d)
weekday方法是輸入年月日,我們便可知道這天是星期幾;返回值是0-6,0代表星期1,6代表星期天
通過一個例子來講解,以12月12號為例:
雙12是星期六,返回的結果是5,5代表的就是星期六,剛好吻合。
3.time
time模塊是涉及到時間功能中最常用的一個模塊 ,在Python的相關時間需求中經常會用到,下面具體講解該模塊的使用方法。
3.1模塊內容
先看模塊的整體使用
3.2time
time.time()
是獲取當前的時間,更加嚴格地說,是獲取 當前時間的時間戳 。
再次理解時間戳:它是以1970年1月1日0時0份0秒為計時起點,計算到當前的時間長度(不考慮閏秒)
3.3localtime
time.localtime
是 打印當前的時間 ,得到的結果是 時間元組 ,具體含義:
筆記:結果是時間元組
time.localtime
的參數默認是time.time()
的時間戳,可以自己輸入某個時間戳來獲取其對應的時間
- 默認當前時間戳
- 指定某個時間戳
3.4gmtime
localtime()
得到的是 本地時間 ,如果需要國際化,使用gmtime()
,最好是使用格林威治時間。
格林威治標準時間:位于英國倫敦郊區的皇家格林威治天文臺的標準時間,本初子午線經過那里。
3.5asctime
time.asctime
的參數為空時,默認是 以time.localtime的值為參數 ,得到當前的日期、時間、星期;另外,我們也可以自己設置參數,參數是時間元組
- 使用當前時間的默認時間元組localtime
- 自己指定一個時間元組
獲取當前時間的具體時間和日期:
3.6ctime
ctime
的參數默認是時間戳;如果沒有,也可以指定一個時間戳
3.7mktime
mktime()
也是以時間元組為參數的,它返回的是時間戳, 相當于是localtime
的逆向過程 :
3.8strftime
strftime()
是按照我們指定的格式 將時間元組轉化為字符串 ;如果不指定時間元組,默認是當前時間localtime()
。常用到的時間格式見下表:
我們舉例說明:
- 字符串中的分隔符我們可以任意指定
- 可以同時顯示年月日時分秒等
3.9strptime
strptime()
是將字符串轉化為時間元組,我們需要特別注意的是,它有兩個參數:
- 待轉化的字符串
- 時間字符串對應的格式,格式就是上面
-
模塊
+關注
關注
7文章
2731瀏覽量
47662 -
網站
+關注
關注
2文章
259瀏覽量
23213 -
函數
+關注
關注
3文章
4345瀏覽量
62880 -
python
+關注
關注
56文章
4807瀏覽量
84955
發布評論請先 登錄
相關推薦
評論