python日期和時間的操作方法匯總

2020-10-18 生信修煉手冊
日期和時間可以說是一種獨特的數據類型,既不同於數字,也不同於字符串,而且有自己獨特的運算規則。在不同的程式語言中,都會將日期和時間與常規的數據類型獨立開來,單獨進行操作。在python的內置模塊中,時間與日期相關的有以下3個
  1. datatime

  2. time

  3. calendar

在實際開發中,處理日期和時間主要有以下3種場景
  1. 獲取當前的日期和時間

  2. 格式化日期和時間

  3. 計算兩個時間的差值

在進行日期和時間操作前,我們必須先理解以下幾個常用的術語

  1. 格林威治標準時間,英文縮寫為GMT是指位於英國倫敦郊區的皇家格林尼治天文臺的標準時間

  2. 時間起點,國際標準的時間起點為1970年1月1日00:00:00

  3. 時間戳,當前時間與時間起點之間經過的秒數

  4. 時區,不同國家,地區之間存在時差,為了方便換算,規定格林尼治天文臺為中時區,依次為零點,每15經度定義一個時區,每個時區時差為1小時,全球共劃分為24個時區

  5. 夏令時,英文縮寫為DST,是一種人為規定的時間制度,在夏季將時間調快1小時,以達到早睡早起,節約能源的目的,在秋冬季的某一天再將時間調整回來。世界範圍內有一百多個國家實行夏令時制度,每個國家的夏令時起止時間不同,我國從1992年之後,不再實行夏令時

下面來看每個模塊的常見用法

1. time

該模塊主要用來獲取當前時間,並進行格式化,基本用法如下

>>> import time# 返回時間戳>>> time.time()1589853649.8406465# 以struc_time元組的形式返回當前時間>>> time.localtime()time.struct_time(tm_year=2020, tm_mon=5, tm_mday=19, tm_hour=9, tm_min=6, tm_sec=56, tm_wday=1, tm_yday=140, tm_isdst=0)# 以struc_time元組的形式返回當前時間>>> time.gmtime()time.struct_time(tm_year=2020, tm_mon=5, tm_mday=19, tm_hour=2, tm_min=0, tm_sec=8, tm_wday=1, tm_yday=140, tm_isdst=0)

struc_time元組包含了9個元素,每個元素的含義如下

  1. tm_year, 表示年份,四位數

  2. tm_mon, 表示月份,1到12之間的一個數字

  3. tm_mday,表示每月的第幾天,1到31之間的一個數字

  4. tm_hour, 表示小時,0到23之間的一個數字

  5. tm_min, 表示分鐘數,0到59之間的一個數字

  6. tm_sec, 表示秒數,0到61之間第一個數字

  7. tm_wday,表示星期,0到6之間的一個數字,0表示星期一,依次類推

  8. tm_yaday,表示一年中的第幾日,1到366之家的一個數字

  9. tm_isdst, 是否為夏令時,1表示是,0表示否,-1表示未知

struc_time元組可以輕鬆訪問其中的內容,用法如下

>>> time.localtime().tm_year2020>>> time.localtime().tm_mon5>>> time.localtime().tm_mday19>>> time.localtime().tm_hour10>>> time.localtime().tm_min50>>> time.localtime().tm_sec18

日期的格式化和字符串格式化類似,內置了格式化標識符,通過strftime函數來進行格式化,每個標識符的作用如下

# %a表示星期的縮寫>>> time.strftime('%a', time.localtime())'Tue'# %A表示星期的全稱>>> time.strftime('%A', time.localtime())'Tuesday'# %b表示月份的縮寫>>> time.strftime('%b', time.localtime())'May'# %B表示月份的全稱>>> time.strftime('%B', time.localtime())'May'# %c表示>>> time.strftime('%c', time.localtime())'Tue May 19 09:33:57 2020'# %d表示每月的第幾天>>> time.strftime('%d', time.localtime())'19'# %H為十進位表示的小時, 24小時制,範圍為00-23>>> time.strftime('%H', time.localtime())'09'# %I為十進位表示的小時,12小時制,範圍為01-12>>> time.strftime('%I', time.localtime())'09'# %j表示一年中的第幾天>>> time.strftime('%j', time.localtime())'140'# %m表示十進位的月份,範圍為01-12>>> time.strftime('%m', time.localtime())'05'# %M表示十進位的分鐘,範圍為00到59>>> time.strftime('%M', time.localtime())'34'# %p表示上午或者下午,值為AM或PM>>> time.strftime('%p', time.localtime())'AM'# %S表示秒數,範圍00到61>>> time.strftime('%S', time.localtime())'36'# %U表示一年中的周數,範圍為00-53>>> time.strftime('%U', time.localtime())'20'# %w表示一周中的第幾天,範圍0-6,0表示星期日,以此類推>>> time.strftime('%w', time.localtime())'2'# %W表示一年中的周數,範圍為00-53>>> time.strftime('%W', time.localtime())'20'# %x以本地規則表示日期>>> time.strftime('%x', time.localtime())'05/19/20'# %X以本地規則表示時間>>> time.strftime('%X', time.localtime())'09:34:51'# %y表示沒有世紀的年份,即4位數年份的後兩位>>> time.strftime('%y', time.localtime())'20'# %Y表示完整年份>>> time.strftime('%Y', time.localtime())'2020'# %z表示時區偏移>>> time.strftime('%z', time.localtime())'+0800'# %Z 表示時區名稱>>> time.strftime('%Z', time.localtime())'CST'# %% 表示一個百分號字面值>>> time.strftime('%%', time.localtime())'%'

如果只是簡單的格式化當前日期,內置的函數acstime和ctime是最簡單的方式,當然也可以用多種格式化標識符進行組合,靈活的格式化日期,用法如下

>>> time.asctime()'Tue May 19 10:52:51 2020'
>>> time.ctime()'Tue May 19 09:59:11 2020'
>>> time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())'2020-05-19 09:50:50'
2. datetime
datetime是日期和時間處理的基本模塊,當然也支持獲取當前日期和格式化,其更獨特的功能是進行時間的運算,比如計算兩個日期之間差了幾天,用法如下
>>> import datetime# 獲取當前日期>>> a = datetime.date.today()>>> datetime.date.today()datetime.date(2020, 5, 19)# 獲取年,月,日>>> a.year2020>>> a.month5>>> a.day19# 格式化>>> a.isoformat()'2020-05-19'
# 獲取當前的日期和時間>>> datetime.datetime.now()datetime.datetime(2020, 5, 19, 10, 56, 50, 225742)>>> a = datetime.datetime.now()# 獲取年,月,日,時,分,秒>>> a.year2020>>> a.month5>>> a.day19>>> a.hour10>>> a.minute56>>> a.second53
# 計算前一天的時間>>> datetime.datetime.now() - datetime.timedelta(days = 1)datetime.datetime(2020, 5, 18, 11, 5, 40, 612206)# 計算1小時後的時間>>> datetime.datetime.now() + datetime.timedelta(seconds = 3600)datetime.datetime(2020, 5, 19, 12, 8, 3, 839407)
3.  calendar

該模塊用於處理日曆信息,內置了月份和星期的列表,可以當做一個常量來使用,用法如下

# 月份的列表>>> [i for i in calendar.month_name]['', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']# 星期的列表>>> [i for i in calendar.day_name]['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

除此之外,也提供了一些年份相關的函數

# 判斷一個年份是否為閏年>>> calendar.isleap(1997)False>>> calendar.isleap(2020)True# 返回兩個年份間閏年的個數>>> calendar.leapdays(1997, 2020)5

對於日期和時間而言,最常用的還是time和datetime兩個模塊,掌握常用的日期獲取和格式化操作,就足夠應付大多數的開發需求了。

·end·

相關焦點

  • python時間序列:日期和時間數據
    前言時間序列(time series)數據都是一種重要的結構化數據形式。時間序列數據的意義取決於具體應用場景,主要有一下幾種:時間戳(timestamp),特定的時刻。固定時期(period),如2007年1月或2010年全年。時間間隔(interval),由起始和結束時間戳表示。
  • python字典操作大全,學習python第7天
    python字典跟列表類型,能存儲多個數據,並且還能在訪問元素的時候可以很快定位到需要的元素。而python字典操作方法有多少種呢?下面羽憶教程為您介紹。下面為你介紹python字典的操作方法大全。python字典取值在python字典中數值都是以鍵值對的形式存在,如果想取得值,就需要通過對應的鍵。代碼如下所示:scores = {'name':'小明','age':18}print(scores['name'])print(scores['age'])
  • python基礎系列|示例講解時間模塊datetime
    Python 有很多種方式處理日期和時間,常見的時間處理的模塊是datetime、time、calendar。能融匯貫通的了解和使用這三個模塊,才能輕而易舉地用python處理時間。本文以此為目的,通過講述各個時間模塊的概述、函數及相關知識細節、以及相應的示例來講透它們的使用方式。
  • 2020年1月徵期稅控盤抄報方法(截止日期15日)
    抄報方法抄報步驟:本月小規模需季報,與一般納稅人抄報方法一致。詳細抄報步驟:1.上報匯總操作流程:【報稅處理】-【網上抄報】-【上報匯總】(月初打開軟體,在網絡通暢伺服器地址連接正確的情況下,開票軟體會自動上報匯總。)2.網上申報操作流程:通過網上稅務局或第三方申報軟體進行【網上申報】(扣款成功)請納稅人注意每個稅種申報完畢後,都需要檢查是否申報成功。
  • 用Python拼接字符串的常用方法及性能分析
    前幾篇文章,我們對Python常用的操作技能進行了匯總。今天,我們來梳理一下Python拼接字符串的幾種常用方法,並對方法進行比較。先看一下Python之禪對於字符串的拼接,網上眾說紛紜,有的說有4種方法,也有的說是6種方式、還有的甚至匯總了7種方式。各種方式都是儘可能將能拼接字符串的功能全部進行梳理匯總。名目繁雜,不便於記憶。
  • python sys模塊的常見用法匯總
    python的內置模塊sys,提供了系統相關的一些變量和函數,在實際開發中,常見的有以下幾種用法1.版本有限制的代碼,可以通過以上方法來判斷python版本是否符合要求。 標準輸入,輸出和錯誤流sys模塊提供了變量來表示標準輸入,輸出和錯誤流,列表如下sys.stdin, 標準輸入流sys.stdout,標準輸出流
  • Python時間模塊(筆記)
    「關於python處理時間常用的庫,分別是time、datetime、calendar這三個庫,以下是整理總結的常用方法:1、time庫# 獲取本地時間戳,返回浮點數print(time.time()) # 1590921425.7660675# 獲取結構化時間,time.gmtime(時間戳),不傳參默認當前 UTC時間print(time.gmtime
  • python3.8操作(插入,刪除)mysql/MariaDB資料庫
    01主題大家好,我是義縣遊學電子科技.今天來跟大家說一個工作中常用到的操作,python3.8操作MariaDB資料庫.因為MariaDB屬於mysql分支因此資料庫命令語句都是通用的非常方便.02環境python-3.8 ,64位mairadb-10.4.7,64位python包:mysql-connector-2.2.9
  • Python 三十大實踐、建議和技巧
    %timeit:類似於python中的time模塊,可以為代碼運行計時完整的命令列表參見:https://ipython.readthedocs.io/en/stable/interactive/magics.htmlIPython的另一個有用功能是可以使用之前任意一行代碼的輸出,代碼的輸入和輸入實際上都是對象,例如可以通過 Out[3] 來使用第三次運行代碼的輸出對象。
  • 盤點幾個方法,設計出完美的日期時間選擇器
    什麼樣的場景下該用什麼樣的日期選擇器?這篇文章對於時間日期選擇器進行了精細的拆解,結合作者自己的經驗總結了時間日期選擇器的使用方法,希望對你有所幫助。一、定義日期時間選擇控制項(選擇器)是幫助用戶選擇(輸入)日期和時間的控制項。
  • 【Python基礎】13個知識點,系統整理Python時間處理模塊Datetime
    月份,和具體的日期號,這幾個方法在數據分析中經常會用到。2020日期所屬的月份為:10日期具體的日期號為:12時間 time 實例的構造time 是一個獨立於任何特定日期的理想化時間,其屬性有 hour,minute, second , microsecond 和 tzinfo 。
  • python計算平方和平方根的方法
    前言從小學我們就學習了平方和開平方運算。平方是一種運算,比如,a的平方表示a×a,簡寫成a,也可寫成a×a(a的一次方乘a的一次方等於a的2次方),例如4×4=16,8×8=64,平方符號為2。相反的開平方就是√ ̄(這裡我們只考慮正數),也就是求平方根。
  • 加快Python算法的四個方法(二)Numba
    CDA數據分析師 出品相信大家在做一些算法經常會被龐大的數據量所造成的超多計算量需要的時間而折磨的痛苦不已,接下來我們圍繞四個方法來幫助大家加快一下Python的計算時間,減少大家在算法上的等待時間。今天給大家介紹Numba這一塊的內容。1.簡介所以什麼是Numba呢?
  • 學習EXCEL日期基礎知識,日期和數字互相轉換的方法
    今天我們來學習一下日期基礎知識,讓你真真掌握日期操作方法,日期在EXCEL數據裡面經常會用到,如果你不了解日期數據原理可能會出現一些錯誤不知道怎麼解決,今天就讓你弄個清清楚楚,日期的理論知識。一、了解一下日期;日期是一種比較特殊形式的數據表現,一個日期可以對應一個常規數字,一個數字不一定對應一個日期。二、日期的範圍;在EXCEL中日期都是有範圍規定的,超出這個範圍就顯示錯誤,日期範圍;1900-1-1到9999-12-31號。三、常規數值轉換為日期,在單元格任意輸入常規數值,右擊滑鼠/設置單元格格式/數字/選擇日期/確定。
  • excel日期函數技巧:到期時間提醒的幾種設置方法
    今天將給大家提供5種製作到期提醒的方法,第一種最簡單,最後一種最人性化並且能實現篩選控制。學習更多技巧,請收藏關注部落窩教育excel圖文教程。在平時的工作應用中,我們都喜歡用Excel表格來記錄整理數據,數據裡會包含到期時間,比如訂單到期日期、合同到期日期、產品到期日期等。
  • 「python opencv視覺零到實戰」八、圖片選區操作
    一、學習目標了解什麼是ROI了解floodFill的使用方法如有錯誤歡迎指出~目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python opencv視覺入門到實戰
  • Python裡簡單的矩陣操作
    Python比較牛的一個地方就是庫比較多,數據操作方便,下面的幾個例子是對矩陣的操作1、構建一個矩陣由上圖可見,reshape(3,5)就能構建一個3×5的矩陣2、隨機數生成一個矩陣3 、起始值為0,終點值為2×pi,總共100個值
  • Python2 已終結,入手Python 3,你需要這30個技巧
    這篇教程有 30 個你會喜歡的方法。勤勞的程式設計師們,這裡有 30 條使用 Python 時實用的建議和小技巧。你可以把讀這篇文章當做工作間隙的小憩,而且我保證你學到的東西會跟工作時一樣多。1.翻轉字符串和 list你可以用剛剛提到的切片操作來翻轉字符串和 list。把 step 設置成-1,就成完成翻轉操作:16. 展示小貓的圖片我終於還是發現了一個可以在我文章中提到小貓的機會!當然,你也可能是用這個功能來展示其他的圖。
  • Python連接MySQL資料庫方法介紹(超詳細!手把手項目案例操作)
    PyMySQL和mysql.connector步驟:連接資料庫生成遊標對象執行SQL語句關閉遊標:def close(self):self.cur.close()self.db.close()# 資料庫執行操作方法:def Operation(self, sql):try:self.open
  • 【C++】C++獲取系統日期時間
    (其中有一些bug)  【轉】2009-10-05 16:20:32|  分類: c++ |  標籤: |字號大中小 訂閱本文從介紹基礎概念入手,探討了在C/C++中對日期和時間操作所用到的數據結構和函數,並對計時、時間的獲取、時間的計算和顯示格式等方面進行了闡述。