Python學習筆記-time模塊詳解(附常用函數實例)

2021-03-02 Quora文選
Python裡面和時間有關的那些事

python的小白,對日期的加減、格式化輸出,容易有誤區和迷茫,臨時各種百度,雖然也能找到方法,但是難免會試錯。

那咱們按不同需求來整理一下如何?下次用到的時候就可以拿來主義了!歡迎糾正和補充!

首先,引包方式有兩種:

引包方式參數調用方式區別輸出import datetime,timeprint(datetime.datetime.now())2020-09-24 22:59:01.414810from datetime import datetime,timedeltaprint(datetime.now())2020-09-24 22:59:01.414810

以下為方便,統一為:from datetime import datetime,timedelta 引包方式。

from datetime import datetime,timedelta

# 獲取當前年月日時分秒   
print(datetime.now())  #--> 2020-09-24 22:59:01.414810
print(datetime.now().year) #-->  2020
print(datetime.now().month) #-->  9
print(datetime.now().day) #-->  24
print(datetime.now().hour) #-->  22
print(datetime.now().minute) #-->  59
print(datetime.now().second) #-->   1
print(datetime.now().microsecond) #-->  416810

# 獲取當前年月日
print(datetime.today()) #-->  2020-09-24
print(datetime.today().year)#-->  2020
print(datetime.today().month) #-->  9
print(datetime.today().day) #-->  24
print(datetime.now().strftime('%Y-%m-%d')) #-->  2020-09-24

# 獲取當前日期向前/後加減X天
print((datetime.now() +timedelta(days=-21)).strftime('%Y-%m-%d')) #-->今天往前21天,輸出:2020-09-03

# 計算今天距離某日間隔日期
birthday = datetime(2016, 1, 28)
pic_time = datetime.now()
print ('相隔:',(pic_time - birthday).days) #-->今天距離2016年1月28日 相隔: 1701

# 準確計算某日期距離此刻相隔多少天多少小時分鐘秒
birthday2 = datetime.strptime('2016-10-28', '%Y-%m-%d')
pic_time = datetime.now()
delta = (pic_time - birthday2)
print(delta) #-->  1427 days, 23:02:27.992625

# 某日期向前或向後倒多少天的計算方法
someday = "2019-10-21"
format_someday = datetime.strptime(someday,"%Y-%m-%d")
target_day = format_someday + timedelta(days=3)
print(target_day) #-->  2019-10-24 00:00:00

#格式化日期對象轉為字符串格式
print(target_day.strftime("%Y-%m-%d %H:%M:%S")) #-->  2019-10-24 00:00:00

# 字符串格式轉為格式化日期對象
strDate = '2019-03-17 11:00:00'
strf_date = datetime.strptime(strDate, "%Y-%m-%d %H:%M:%S")
print(strf_date,type(strf_date))

# 準確計算某兩個日期的時間相隔多少天多少小時分鐘秒鐘
d1 = datetime.strptime('2012-03-05 17:21:20', '%Y-%m-%d %H:%M:%S')
d2 = datetime.strptime('2012-03-02 17:41:20', '%Y-%m-%d %H:%M:%S')
delta = d1 - d2
print(delta) #--> 2 days, 23:40:00

下面列舉幾種時間、年齡計算方面的函數,可以直接調用:

輸入年月日為生日(比如2016, 1, 27),返回今天是幾歲和準確天數
def ageDays(year,month,day):
    birthday = datetime.date(int(year),int(month),int(day))
    today = datetime.date.today()
    days = (today - birthday).days
    # 精確年份
    exa_year = (today - birthday).days / 365
    # 保留一位小數
    age = round(exa_year, 1)
    return days,age

#輸入一個年月日,返回距離固定日期的生日的年齡和天數
def ageDaysCounts(year,month,day):
    pic_time = datetime(int(year),int(month),int(day))
    birthday = datetime(2015, 2, 28)
    # today = date.today()
    days = (pic_time-birthday).days
    # 精確年份
    exa_year = (pic_time-birthday).days / 365
    # 保留一位小數
    age = round(exa_year, 1)
    return age,days

輸入時間戳,返回年月日時分秒或者年月日
def timeStampToTime(timestamp):
    timeStruct = time.localtime(timestamp)
    return time.strftime('%Y-%m-%d %H:%M:%S',timeStruct)

把時間戳輸出返回年份、月份和天
# 把時間戳輸出返回年份
def timeStampToYear(timestamp):
    timeStruct = time.localtime(timestamp)
    return int(time.strftime('%Y', timeStruct))

# 把時間戳輸出返回月份
def timeStampTomonth(timestamp):
    timeStruct = time.localtime(timestamp)
    return int(time.strftime('%m', timeStruct))

# 把時間戳輸出返回幾號
def timeStampToday(timestamp):
    timeStruct = time.localtime(timestamp)
    return int(time.strftime('%d', timeStruct))

本函數功能:按照一個生日日期輸入一個一位數小數(比如2.1歲),返回2.1歲-2.2歲的日期範圍
def floatToDateScope(flo):
    # 計算年齡代表的天數
    start_age = flo*365
    end_age = (flo + 0.1)*365
    # 根據起始和結束的天數,生成日期對象,留作相加時使用
    delta1 = timedelta(days=start_age)
    delta2 = timedelta(days=end_age)
    # 將生日與相加日期對象進行相加
    s = datetime(2019, 1, 28) + delta1
    t = datetime(2019, 1, 28) + delta2
    # 將相加後的日期進行格式化處理 生成需要的日期顯示格式 比如:2025-01-07
    start_date = s.strftime('%Y-%m-%d')
    end_date = t.strftime('%Y-%m-%d')
    print(start_date,'起始日期') #  -->  2025-01-07 起始日期
    print(end_date,'結尾日期') #  -->  2025-02-12 結尾日期
    return "根據輸入的準確年齡和默認生日,算出日期範圍為%s到%s"%(start_date,end_date)

相關焦點

  • python之OS模塊39個常用函數詳解
    作者:小伍哥 來源:AI入門學習os,語義作業系統,所以該模塊就是作業系統相關的功能了,用於處理文件和目錄這些我們日常手動需要做的操作,比如新建文件夾、獲取文件列表、刪除某個文件、獲取文件大小、重命名文件、獲取文件修改時間等,該模塊就包含了大量的作業系統操作函數,精選常用的進行解析,希望對大家有所幫助。
  • netcdf4-python 模塊詳解
    python中提供了多種方式來處理netcdf文件,這裡主要講一下常用的 netcdf4-python 模塊。
  • Python 日期時間處理模塊學習筆記
    來自:標點符的《Python 日期時間處理模塊學習筆記》連結:http://www.biaodianfu.com
  • python教程之七模塊與函數庫
    模塊上一章,我們講解了函數的概念及其使用方法和案例等,我們定義了函數後,可以多次調用該函數來使用,但是如果我們從python解釋器退出後,這些函數信息就都無效了,為此,我們本章提供了模塊這個概念。我們把這些定義存放在文件裡,保存在磁碟裡,這個文件被稱為模塊。模塊是包含所有我們定義的函數和變量的文件,可以被別的程序引入,用來使用模塊裡面的信息。
  • 【python】os 模塊使用筆記
    複製文件的函數居然在os模塊中不存在!原因是複製文件並非由作業系統提供的系統調用。理論上講,我們通過上一節的讀寫文件可以完成文件複製,只不過要多寫很多代碼。幸運的是shutil模塊提供了copyfile()的函數,你還可以在shutil模塊中找到很多實用函數,它們可以看做是os模塊的補充。
  • Python常用時間模塊介紹 python簡單入門
    >time模塊下有很多函數可以日期和時間的處理,如time.time()用於獲取當前時間戳,localtime()將浮點數的時間戳向時間元組轉換,asctime()和strftime()可以進行時間和日期的格式化,time.sleep()可以進行時間定時等。
  • Python函數詳解一(函數參數、變量作用域)
    Python函數函數是python程序的重要組成部分。所謂函數就是實現某一特定功能的代碼段,可重複使用,提高了代碼的利用率。
  • Python3 pickle模塊的使用詳解
    pickle模塊特點1、只能在python中使用,只支持python的基本數據類型。2、可以處理複雜的序列化語法。
  • Python random模塊學習筆記
    來自:標點符的《Python random模塊學習筆記》連結:http://www.biaodianfu.com
  • python中常用模塊詳解
    本次我們的主題是以Python中最常使用的json和pickle模塊為例,深入探討Python在處理此類問題時,模塊的應用範圍和優缺點,本次分為三個章節進行討論。今天,我們詳解pickle模塊的使用。什麼是序列化?
  • 零基礎學習Python_組織結構和range()函數
    Python學習筆記公眾號搜索--樹莓派OpenCV學舍
  • Python學習筆記:模塊和包
    模塊就是python程序,任何python程序都可作為模塊導入。對於任何程序,只要導入了模塊,即可使用該模塊內的所有成員。希望實現的效果:如果直接使用python命令運行該模塊(相當於測試),程序應該執行該模塊的測試函數;如果是其他程序導入該模塊,程序不應該執行該模塊的測試函數。此時可藉助於所有模塊內置的name__變量進行區分,如果直接使用Python命令來運行一個模塊,_name_變量的值為_main_;如果該模塊導入被導入其他程序中,_name_變量的值就是模塊名。
  • python測試函數模塊unittest
    1.測試函數在編寫完代碼後進行對代碼測試是否有錯誤2.pytho標準庫中的模塊unittest為代碼測試工具例如:name_function.py 模塊名def get_formatted_name(first, last): full_name = first + ' ' + last
  • python編程入門,零基礎學習Python基礎教程
    這裡推薦這門python編程入門基礎教程,適合零基礎的同學學習!python軟體工程師都學什麼?自學Python,看視頻學的更快、更透徹一些,給你個課程大綱!階段一:Python開發基礎Python全棧開發與人工智慧之Python開發基礎知識學習內容包括:Python基礎語法、數據類型、字符編碼、文件操作、函數、裝飾器、迭代器、內置方法、常用模塊等。
  • python中的模塊詳解
    概念python中的模塊是什麼?簡而言之,在python中,一個文件(以「.py」為後綴名的文件)就叫做一個模塊,每一個模塊在python裡都被看做是一個獨立的文件。模塊可以被項目中的其他模塊、一些腳本甚至是交互式的解析器所使用,它可以被其他程序引用,從而使用該模塊裡的函數等功能,使用Python中的標準庫也是採用這種方法。分類在Python中模塊分為以下幾種:系統內置模塊,例如:sys、time、json模塊等等;自定義模塊,自定義模塊是自己寫的模塊,對某段邏輯或某些函數進行封裝後供其他函數調用。
  • python模塊三劍客之time os sys
    概要在python有幾個常用的模塊,今天來介紹一下python模塊中的三劍客:time模塊、os模塊、sys模塊。一、time模塊在python中,所有跟時間有關的操作都要用到時間模塊。我們在使用這個模塊之前,首先需要導入這個模塊。
  • 【微筆記】houdini使用python創建城市教程筆記I
    昨天小編分享了houdini使用python製作城市的教程,講解得非常不錯,不過個人建議大家至少有一些python基礎和houdini python結合基礎學習會比較好,因為課程內容量比較大。小編也在同步學習,今天把第一部分的筆記1-8課 python基礎介紹內容筆記整理分享出來。在CG獵人vip群裡的同學可以獲得pdf版本,作為小福利吧。
  • Python之re模塊方法詳解(正則表達式)
    學習re模塊首先要對python正則表達式要了解,正則表達式是一個特殊的字符序列,它能幫助你方便的檢查一個字符串是否與某種模式匹配
  • python 時間模塊 time datetime calendar複習與比較
    今天針對python庫自帶的三個時間模塊進行複習。。。。time模塊time模塊提供各種操作時間的函數由於time模塊是python自帶的,所以只需要簡單的import time就ok了獲取時間戳time.time()函數可以用來獲取當前時間的時間戳。
  • Python函數的基本特徵詳解
    那這一節我們先學習函數的最基本用法吧首先我們先學習一下在python中如何去編寫一個函數。今天我們先拋出點兒理論:需要注意的是,函數在python中同在C語言中是有所不同的。第一:def引導一段可執行的代碼:def本身是一個可執行的語句,函數此時並不存在,直到python運行了def後,函數才存在,def後面包含的就是函數語句。在典型的操作中,def語句在模塊文件中編寫,並自然而然的在模塊文件第一次被導入的時候生成定義的函數。第二:函數也是對象。