Python時間模塊(筆記)

2021-01-10 求索未來

「關於python處理時間常用的庫,分別是time、datetime、calendar這三個庫,以下是整理總結的常用方法:

1、time庫

# 獲取本地時間戳,返回浮點數print(time.time()) # 1590921425.7660675# 獲取結構化時間,time.gmtime(時間戳),不傳參默認當前 UTC時間print(time.gmtime()) # time.struct_time(tm_year=2020, tm_mon=5, tm_mday=31, tm_hour=10, tm_min=38, tm_sec=23, tm_wday=6, tm_yday=152, tm_isdst=0)# time.localtime(時間戳),不傳參默認當前時間print(time.localtime()) # time.struct_time(tm_year=2020, tm_mon=5, tm_mday=31, tm_hour=18, tm_min=41, tm_sec=7, tm_wday=6, tm_yday=152, tm_isdst=0), type-->class# 結構時間-->時間戳print(time.mktime(time.localtime())) # 1590921819.0# 字符串時間;time.asctime(結構化時間),不傳參默認當前結構化時間print(time.asctime()) # Sun May 31 18:44:57 2020# time.ctime(時間戳),不傳參默認當前時間戳print(time.ctime()) # Sun May 31 18:47:23 2020# 結構化時間-->字符串時間 time.strftime('時間格式'[,結構化時間]),不傳參為默認當前時間'''格式化字符串 日期/時間說明 取值範圍%Y 年份 0000~9999%m 月份(數字) 01~12%B 月份(英文全稱) January~December%b 月份(英文縮寫) Jan~Dec%d 日期 01~31%A 星期(英文全稱) Monday~Sunday%a 星期(英文縮寫) Mon~Sun%H 小時(24小時制) 00~23%I 小時(12小時制) 01~12%p 上/下午 AM,PM%M 分鐘 00~59%S 秒 00~59%X 本地時間表示%w 星期(0-6),星期天為星期的開始'''print(time.strftime('%Y-%m-%d %H:%M:%S %A', time.localtime())) # 2020-05-31 19:10:19 Sundayprint(time.strftime('%X')) # 19:13:59# 字符串時間-->結構化時間;time.strptime('字符串時間'[,時間格式]),字符串時間必須和時間格式對應# 時間格式默認為 %a %b %d %H:%M:%S %Yprint(time.strptime('Thu Jun 1 10:10:10 2020')) # time.struct_time(tm_year=2020, tm_mon=6, tm_mday=1, tm_hour=10, tm_min=10, tm_sec=10, tm_wday=3, tm_yday=153, tm_isdst=-1)print(time.strptime('2020-06-01 16:04:08', '%Y-%m-%d %H:%M:%S')) # time.struct_time(tm_year=2020, tm_mon=6, tm_mday=1, tm_hour=16, tm_min=4, tm_sec=8, tm_wday=0, tm_yday=153, tm_isdst=-1)# 指定程序暫停時間;time.sleep(secs)time.sleep(0.1) # 程序暫停0.1秒2、datetime庫

相比較於time庫,datetime庫更加直觀、更易於調用。

datetime庫定義了五個類,分別是:

datetime.date: 表示日期的類datetime.time: 表示時間的類datetime.datetime: 表示日期時間的類datetime.timedelta:表示時間間隔,即兩個時間點的間隔datetime.tzinfo:時區的的相關信息from datetime import datetime'''注意只import datetime 如此是沒有.today()'''# 返回表示今天本地時間的datetime對象print(datetime.today()) # 2020-06-01 16:38:06.265554print(type(datetime.today())) # <class 'datetime.datetime'># 返回表示當前本地時間的datetime對象print(datetime.now()) # 2020-06-01 16:41:15.314717# 根據時間戳創建一個datetime對象print(datetime.fromtimestamp(time.time())) # 2020-06-01 16:42:34.630726# datetime對象操作dt = datetime.now()print(dt.date()) # 2020-06-01print(dt.time()) # 16:44:01.192386# 返回替換後的datetime對象print(dt.replace(year=2021, month=8, day=2)) # 2021-08-02 16:47:21.978268# 返回指定格式的datetime對象print(dt.strftime('%Y/%m/%d %H:%M:%S')) # 2020/06/01 16:49:12'''datetime.timedeltatimedelta主要用來實現時間的運算可以很方便的計算 天、分鐘、秒的時間計算'''from datetime import timedeltadt = datetime.now()dt1 = dt + timedelta(days=-1) # 昨天dt2 = dt - timedelta(days=1) # 昨天dt3 = dt + timedelta(days=1) # 明天dt4 = dt + timedelta(hours=10) # 10小時後print(dt1, dt2, dt3, dt4) # 2020-05-31 16:59:58.956540 2020-05-31 16:59:58.956540 2020-06-02 16:59:58.956540 2020-06-02 02:59:58.956540print(dt + timedelta(days=8, hours=8, minutes=20, seconds=100, milliseconds=100, microseconds=100)) # 2020-06-10 02:24:45.1564183、calendar庫

相較於前面兩個庫,calendar擁有更高的可視化程度

# calendar庫import calendar# 獲取指定年份的日曆字符串print(calendar.calendar(2020))

輸出:2020日曆# 獲取指定月份的日曆字符串print(calendar.month(2020, 6))''' June 2020Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 11 12 13 1415 16 17 18 19 20 2122 23 24 25 26 27 2829 30'''# 以列表形式返回每個月的總天數print(calendar.mdays) # [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]# 返回指定月份的第一天是周幾以及當月總天數print(calendar.monthrange(2020, 6)) # (0, 30) (周一, 30天)# 判斷閏年print(calendar.isleap(2020)) # TrueLast、一些習題

from datetime import datetimeimport calendarimport time''' 第一題:列印出當前距離2020年9月1日有多少天多少小時多少分多少秒 '''# 兩個日期之間的差為cha = datetime(2020, 9, 1, 16, 32) - datetime.now() # type <class 'datetime.timedelta'># 相差的天數days = cha.days# 相差的月數if days > 30: mons = days // 30# 整除 ds = days % 30# 取餘# print(days)# 方法一:分割cha為列表cha_list1 = str(cha).split()print(cha_list1) # ['91', 'days,', '5:34:54.688354']cha_list2 = cha_list1[2].split(':')print("兩個時間相差%d月%d天%d小時%d分鐘%d秒" % (mons ,ds, int(cha_list2[0]), int(cha_list2[1]), int(cha_list2[2][:2])))# 兩個時間相差91天5小時28分鐘1秒 兩個時間相差3月1天5小時4分鐘39秒# 方法二:# 相差的秒數remain_seconds = cha.seconds# 相差的小時數hours = remain_seconds // 3600# 相差的分鐘數minutes = remain_seconds % 3600 // 60# 相差的秒數seconds = remain_seconds % 60print("兩個時間相差%d月%d天%d小時%d分鐘%d秒" % (mons ,ds, hours, minutes, seconds)) # 兩個時間相差3月1天4小時41分鐘35秒''' 第二題:列印出20個月後的日期 '''# cur = datetime.now()defgetDate(cur, ms): year = cur.year # 當前年 month = cur.month # 當前月 day = cur.day # 當前天# 計算20個月之後的天數 total_month = month + ms # 總的月數 y_plus = total_month // 12# 需要增加的年數 new_month = total_month % 12# 新的月份 0,1,2……11# 月份為0if new_month == 0: y_plus -= 1 new_month = 12# 處理2月份的情況及新的月份為30天的情況if new_month == 2and calendar.isleap(year + y_plus): mdays = 29else: mdays = calendar.mdays[new_month]# 如果當前天數大於新月份總天數,不外乎兩種情況:1.2月 2.當前為31日,新月份總天數30日。這個時候月份加1if mdays < day: new_month += 1 day = day - mdaysreturn year+y_plus, new_month, daycur = datetime.now()new_date_tuple = getDate(cur, 20) # (2022, 2, 2)# 20個月後的日期new_date = cur.replace(new_date_tuple[0], new_date_tuple[1], new_date_tuple[2])print(new_date) # 2022-02-02 16:55:59.228952''' 第三題:列印出指定格式的日期 例如:2020年6月2日 星期二 17:08:32 '''# 星期*defgetWeek(w):if w == '1': week = '星期一'elif w == '2': week = '星期二'elif w == '3': week = '星期三'elif w == '4': week = '星期四'elif w == '5': week = '星期五'elif w == '6': week = '星期六'else: week = '星期日'return week# print(type(time.strftime('%w', time.localtime()))) # <class 'str'>w = time.strftime('%w', time.localtime())# print(getWeek(w))# 輸出指定格式print(time.strftime("%Y{}%m{}%d{} {} %H:%M:%S", time.localtime()).format('年', '月', '日', getWeek(w))) # 2020年06月02日 星期二 17:31:16''' 列印出當前距離指定日期差多少天 多少時 多少分 多少秒 '''defcha(year, month, day): a_datetime = datetime(year, month, day) - datetime.now() print('當前時間距%d年%d月%d日還有%d天%d時%d分%d秒' % (year, month, day, a_datetime.days, a_datetime.seconds//3600, a_datetime.seconds % 3600//60, a_datetime.seconds%60))cha(2020, 6, 3) # 當前時間距2020年6月3日還有0天6時11分29秒

相關焦點

  • Python的武器庫05:numpy模塊(下)
    說到程式語言python,有一個著名的格言"餘生太短,只用python"。如果要分析為什麼會存在這麼一句格言?python的語法並不簡單,有複雜難懂的部分,之所以有這樣一句格言,是因為python中有很多強大的模塊,就像一個武器庫。
  • 三分鐘從入門到精通——Python模塊
    中的模塊:假設您正在使用python解釋器。因此,python有一種方法可以將該函數定義放入文件中並隨時使用。模塊是ModuleType類型的對象。該模塊基本上是一個python文件(擴展名為的文件.py),其中包含定義和語句(例如:類,函數,變量等)。Python中的模塊為我們提供了邏輯上組織代碼的靈活性。我們使用模塊將大型程序分解為小的可管理文件。
  • python sys模塊的常見用法匯總
    python的內置模塊sys,提供了系統相關的一些變量和函數,在實際開發中,常見的有以下幾種用法1.版本有限制的代碼,可以通過以上方法來判斷python版本是否符合要求。6. sys.path該變量存儲了python尋找模塊的路徑
  • Python的武器庫04:numpy模塊(上)
    說到程式語言python,有一個著名的格言"餘生太短,只用python"。如果要分析為什麼會存在這麼一句格言?python的語法並不簡單,有複雜難懂的部分,之所以又這樣一句格言,是因為python中有很多強大的模塊,就像一個武器庫。Python正式由於這些模塊的出現,只要引入這個模塊,調用這個模塊的集成函數,問題迎刃而解;不需要從頭開始,節省了大量的時間。
  • Python內置模塊math介紹
    # 導入模塊import math#dir(module):可以通過它查看任何模塊中所包含的工具
  • python基礎系列|示例講解時間模塊datetime
    Python 有很多種方式處理日期和時間,常見的時間處理的模塊是datetime、time、calendar。能融匯貫通的了解和使用這三個模塊,才能輕而易舉地用python處理時間。本文以此為目的,通過講述各個時間模塊的概述、函數及相關知識細節、以及相應的示例來講透它們的使用方式。
  • python時間序列:日期和時間數據
    實驗或過程時間,每個時間點都是相對於特定起始時間的一個度量。例如,從放入烤箱起,每秒鐘餅乾的直徑。Pandas提供了一組標準的時間序列處理工具和數據算法。因此,可以高效處理非常大的時間序列,輕鬆地進行切片/切塊、聚合、對定期/不定期的時間序列進行重採樣等。
  • Python神器:找不到模塊怎麼辦?pip安裝器一鍵全搞定
    Python編程中遇到的最常見錯誤之一:找不到對應的模塊!如下提示:一個錯誤從上圖中可以看到運行編寫的python程序時,出現了ModuleNotFoundError的提示,意思python解釋器找不到名為pandas的模塊/庫 !
  • 「python學習手冊-筆記」003.數值類型
    003.數值類型本系列文章是我個人學習《python學習手冊(第五版)》的學習筆記,其中大部分內容為該書的總結和個人理解,小部分內容為相關知識點的擴展。非商業用途轉載請註明作者和出處;商業用途請聯繫本人(gaoyang1019@hotmail.com)獲取許可。
  • 20課零基礎快速學python代碼模塊的定義 使用自己的模塊
    >探究他人模塊自學模塊學習CSV模塊那什麼是模塊呢?總結下if __name__ == '__main__':語句的用法好了,這就是如何使用我們自己的模塊。接下來,我們學習下如何使用他人模塊。運行代碼你會發現,先列印「hello」,延遲3秒後才列印「python」這就是time模塊中的time.sleep(3)語句起作用了。你還使用過Python自帶的random模塊。
  • python測試函數模塊unittest
    1.測試函數在編寫完代碼後進行對代碼測試是否有錯誤2.pytho標準庫中的模塊unittest為代碼測試工具例如:name_function.py 模塊名def get_formatted_name(first, last): full_name = first + ' ' + last
  • 基於python+OpenCV模塊的人臉識別定位技術
    本文將基於OpenCV模塊,在windows作業系統上,利用python語言,進行人臉識別技術的研究。當然OpenCV的應用領域很廣,除了人臉識別之外,它還支持圖像分割、動作識別、視頻處理等技術。首先看一下實現的效果:OpenCV模塊的下載與安裝OpenCV模塊下載安裝很簡單。
  • 學習筆記,從NumPy到Scrapy,學習Python不能錯過這些庫
    在網絡上看到幾位前輩寫了關於python深度學習庫的文章,對於小小白來說,因為我剛開始學python,我得承認自己看完後依然覺得雲裡霧裡的,不知道這些庫到底對我有什麼用處。所以我到網絡上搜集補充關於這些庫的說明內容,感覺在這個整理資料的過程中,對於這些python程序庫了解了更多,以下是我整理的學習筆記。
  • 【Python基礎】13個知識點,系統整理Python時間處理模塊Datetime
    首先要介紹的,是大家平時用的較多的 datetime 模塊,它屬於 Python 的內置模塊,功能相對較全。針對 Datetime 模塊, 《Python時間使用指南》從構建時間對象實例、時間轉換、時間對象的運算三個方面進行了梳理,共涉及 13 個知識點,整理的大綱如下:datetime構建時間對象實例import datetime# from datetime import
  • Python模塊NumPy,Pandas,matplotlib的中文文檔
    今天比較忙所以不能寫長文了作為一名數據工程師需要熟練掌握python中的這些numpy,matplotlib,pandas,sklearn,seaborn,statsmodel.模塊但是由於這些模塊的文檔都是英文的可能一些英文不好的同學學起來會比較的困難,所以我從網上給大家找到一些中文的文檔
  • Numpy基礎,一位Python大神的筆記,看了後我連Matlab都學會了!
    所以本文作為一個記錄&筆記,文章內容大多數取自網絡以&官網快速入門等,希望可以幫助大家快速入門Numpy。如果你有Matlab基礎,那麼你能很快看懂本文!(私信小編007即可獲取Python視頻教程以及各類PDF!)一個慄子
  • python超聲波傳感_樹莓派超聲波傳感器python - CSDN
    2)模塊自動發送8個40khz的方波,自動檢測是否有信號返回;3)有信號返回,通過IO口ECHO輸出一個高電平,高電平持續的時間就是超聲波從發射到返回的時間。測試距離=(高電平時間*聲速(340M/S))/2;   1.3 HC-SR04超聲波模塊使用方法 初始化時將trig和echo埠都置低,首先向給 trig 發送至少10 us的高電平脈衝(模塊自動向外發送8個40K的方波),然後等待,捕捉 echo
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    因篇幅有限,以下展示的只是課程裡部分內容如對python課程有更多疑問 請諮詢客服 1零基礎入門全能班 01 –python簡介 02 第一個程序 03-python執行方式和pycharm設置 04-程序的注釋和算術運算符 05 程序執行原理 06變量的使用以及類型 07
  • python之OS模塊39個常用函數詳解
    作者:小伍哥 來源:AI入門學習os,語義作業系統,所以該模塊就是作業系統相關的功能了,用於處理文件和目錄這些我們日常手動需要做的操作,比如新建文件夾、獲取文件列表、刪除某個文件、獲取文件大小、重命名文件、獲取文件修改時間等,該模塊就包含了大量的作業系統操作函數,精選常用的進行解析,希望對大家有所幫助。
  • python隨機模塊22個函數詳解(上)
    作者:小伍哥來源: AI入門學習今天給大家介紹下python中的隨機模塊,隨機數可以用於數學,遊戲,安全等領域中,還經常被嵌入到算法中,用以提高算法效率,並提高程序的安全性。平時數據分析各種分布的數據構造也會用到。