亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python學習之時間包使用教程詳解

 更新時間:2022年03月21日 10:54:46   作者:渴望力量的哈士奇  
本文主要介紹了Python中的內置時間包:datetime包?與?time包?,通過學習時間包可以讓我們的開發(fā)過程中對時間進行輕松的處理,快來跟隨小編一起學習一下吧

datetime 時間包

認識 datetime 時間包:

  • date:日期;time:時間;所以 datetime 就是 日期與時間的結合體
  • 使用 datetime 我們就可以獲取當前的時間與時間間隔
  • 可以將時間對象轉成時間字符串
  • 也可以將字符串轉成時間類型(把字符串轉成時間對象也是有格式要求的)

datetime 時間包的常用功能

獲取當前的時間

# 導入包與模塊

# 第一種導入方法:
from datetime import datetime	# 第一個 datetime 是包 ;第二個 datetime 是模塊

# 第二種導入方法:
import datetime 	# 直接導入 datetime 包

# *************************************************************************

# 使用方法:

# 如果我們使用第一種導入方法,那么我們就可以直接通過 datetime 模塊調用 now() 函數:
print(datetime.now())

# >>> 執(zhí)行結果如下:
# >>> 2020-01-16 14:20:19.534920
# >>> 返回的是當前 年、月、日、時、分、秒、毫秒的 datetime 對象


# 如果我們使用第二種導入方法,那么我們就需要 datetime.datetime.now() 的方式來調用now() 函數:
print(datetime.datetime.now())

# >>> 執(zhí)行結果如下:
# >>> 2020-01-16 14:22:11.534920
# >>> 返回的是當前 年、月、日、時、分、秒、毫秒的 datetime 對象

獲取時間間隔

其實獲取時間間隔本身沒有什么用,它需要配合我們剛剛提到的 datetime 模塊的 now() 函數來配合使用。

# 導入包
from datetime import datetime
from datetime import timedelta	

# 這里需要注意:timedelta 并不是模塊,而是一個函數;
# 至于為什么不是模塊,我們不進行深究;可以猜測一下, timedelta 可能是寫在 datetime 包下 __init__.py 文件內被提前導入的函數


# 使用方法:
timeobj = timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)

# days:間隔的天數
# seconds:間隔的秒數
# microseconds:間隔的毫秒數
# milliseconds:間隔的微秒數
# minutes:間隔的分鐘數
# hours:間隔的小時數
# weeks:間隔的周數

# 這些參數我們可以全部傳,也可以只傳一個;像間隔一天、兩天這種情況,我們就可以使用 hours 或 days
# 傳入類型為 整型 ,支持整數與負數,一般我們建議使用正數。

datetime 時間包的小案例

結合獲取當前時間與間隔,我們看一下下面這個小案例:

from datetime import datetime
from datetime import timedelta


now = datetime.now()
print(now, type(now))

# >>> 執(zhí)行結果如下:
# >>> 2020-01-16 15:04:00.492240 <class 'datetime.datetime'>


three_days = timedelta(days=3)
after_three_days = now + three_days
print('三天之后的時間是:', after_three_days)

# >>> 執(zhí)行結果如下:
# >>> 三天之后的時間是: 2020-01-16 15:04:00.492240	


before_three_days = now - three_days
print('三天之前的時間是:', after_three_days)

# >>> 執(zhí)行結果如下:
# >>> 三天之前的時間是: 2020-01-16 15:04:00.492240


one_hour = timedelta(hours=1)
before_one_hour = now - one_hour
print('一小時之前的時間是:', before_one_hour)

# >>> 執(zhí)行結果如下:
# >>> 一小時之前的時間是: 2020-01-16 14:04:00.492240

通過上面的小案例我們知道,時間對象之間我們可以做 加法與減法 的操作,但是時間對象有個問題。

它無法進行時間對象之間的傳輸,比如A服務想要給B服務傳輸一個時間對象,但是時間對象是無法傳輸的,必須先要轉成字符串,然后才可以進行傳輸,接下來我們就學習一下如何將時間對象轉成字符串。

時間對象轉字符串

上文我們知道,想要獲取時間對象就要調用 datetime 模塊的 now() 函數,并且執(zhí)行獲取一個時間對象。

然后賦值給一個 now 變量,now 變量的值作為一個時間對象也會有自己的內置函數。

通過調用內置函數 strftime() 【strftime 是一個格式化字符串的標準】,通過這個字符化的標準就可以通過 format 將當前的日期時間對象按照 format 的標準轉為時間字符串。

用法如下:

# 獲取時間對象
from datetime import datetime
now = datetime.datetime.now()

# 時間對象轉為字符串
date_str = now.strftime(format)

示例如下:

from datetime import datetime


date = datetime.now()

str_date = date.strftime('%Y-%m-%d %H:%M:%S')	# 括號內為時間類型的格式化標準的字符集合
print(str_date)

# >>> 執(zhí)行結果如下:
# >>> 2020-01-16 15:44:26		# 符合時間格式的字符串
# >>> 其實還有更多的時間格式符,在下面會有詳細介紹

接下來,我們用上面的 datetime 時間包的小案例 來實現(xiàn)我們的 時間對象轉字符串 場景

from datetime import datetime
from datetime import timedelta


now = datetime.now()
# print(now, type(now))
now_str = now.strftime('%Y-%m-%d %H:%M:%S')
print(now_str, type(now_str))

# >>> 執(zhí)行結果如下:
# >>> 2020-01-16 16:14:15 <class 'str'>		時間對象已經按照strftime標準格式化成了字符串類型


three_days = timedelta(days=3)
after_three_days = now + three_days
# print('三天之后的時間是:', after_three_days)
after_three_days_str = after_three_days.strftime('%Y/%m/%d %H:%M:%S')
print(after_three_days_str, type(after_three_days_str))

# >>> 執(zhí)行結果如下:
# >>> 2020/01/16 16:19:35 <class 'str'>
# >>> 通過這里我們發(fā)現(xiàn),只要我們只要保證格式符是我們想要的屬性,格式的狀態(tài)我們可以自己去定義
# >>> 甚至這些 '/' 都可以不需要,看下面的運行結果


after_three_days_str = after_three_days.strftime('%Y%m%d')
print(after_three_days_str, type(after_three_days_str))
                                                 
# >>> 執(zhí)行結果如下:
# >>> 20220313 <class 'str'>
# >>> 驗證了格式的狀態(tài)我們可以自己去定義的想法,甚至我們都沒有輸出 時、分、秒

時間字符串轉時間類型

時間字符串轉時間類型方法如下:

# 獲取時間模塊
from datetime import datetime

# 時間字符串轉時間類型
datetime.strptime(tt,format)

# 參數介紹:
# tt:符合時間格式的字符串
# format:tt時間字符串匹配規(guī)則

示例如下:

from datetime import datetime


str_date = '2020-01-01 08:08:08'
date_obj = datetime.strptime(str_date, '%Y-%m-%d %H:%M:%S')	# 格式化標準要與時間字符串匹配

print(date_obj, type(date_obj))

# >>> 執(zhí)行結果如下:
# >>> 2020-01-01 08:08:08 <class 'datetime.datetime'>

同樣的使用 datetime 時間包的小案例 來實現(xiàn)我們的 時間字符串轉時間類型 場景

from datetime import datetime
from datetime import timedelta


now = datetime.now()
# print(now, type(now))
now_str = now.strftime('%Y-%m-%d %H:%M:%S')
# print(now_str, type(now_str))
now_obj = datetime.strptime(now_str, '%Y-%m-%d %H:%M:%S')
print(now_obj, type(now_obj))

# >>> 執(zhí)行結果如下:
# >>> 2020-01-10 18:00:54 <class 'datetime.datetime'>

上面我們進行 時間對象轉字符串的時候,將時間對象的 '%Y-%m-%d %H:%M:%S' 格式進行了取舍,只輸出了 '%Y-%m-%d' ; 這我們嘗試 時間字符串轉為時間類型 同樣做一個取舍試一下,也只保留 '%Y-%m-%d

from datetime import datetime
from datetime import timedelta


now = datetime.now()

three_days = timedelta(days=3)
after_three_days = now + three_days
# print('三天之后的時間是:', after_three_days)
after_three_days_str = after_three_days.strftime('%Y/%m/%d %H:%M:%S')
# print(after_three_days_str, type(after_three_days_str))

after_three_days_obj = datetime.strptime(after_three_days_str, '%Y/%m/%d')
print(after_three_days_obj, type(after_three_days_obj))

# >>> 執(zhí)行結果如下:
# >>> ValueError: time data '2020/01/13 18:22:19' does not match format '%Y%m%d'
# >>> 這里提示我們 格式符 與 字符串 不匹配,所以當時間字符串轉為時間類型時,格式狀態(tài)要保持一致


# 補上 時、分、秒 看看運行結果

after_three_days_obj = datetime.strptime(after_three_days_str, '%Y/%m/%d %H:%M:%S')
print(after_three_days_obj, type(after_three_days_obj))
    
# >>> 執(zhí)行結果如下:
# >>> 2020-01-13 18:26:58 <class 'datetime.datetime'>

接下來我們再看看被我們 使用 '%Y/%m/%d' 截斷的 時間類型轉為字符串,再轉為時間類型會是怎樣的輸出結果。

from datetime import datetime
from datetime import timedelta


now = datetime.now()

three_days = timedelta(days=3)
before_three_days = now - three_days
# print('三天之前的時間是:', after_three_days)
before_three_days_str = before_three_days.strftime('%Y%m%d')
# print(before_three_days_str, type(before_three_days_str))
before_three_days_obj = datetime.strptime(before_three_days_str, '%Y%m%d')
print(before_three_days_obj, type(before_three_days_obj))

# >>> 執(zhí)行結果如下:
# >>> 2020-01-13 00:00:00 <class 'datetime.datetime'>
# >>> 這里我們發(fā)現(xiàn),時間類型轉為字符串,再轉為時間類型,由于使用 '%Y/%m/%d' 截斷轉為字符串的原因
# >>> 在再次轉為 時間類型 后,它的輸出結果的 時、分、秒 部分變成了 00:00:00

非時間格式字符串轉時間類型

我們直接定義一個 非時間格式的字符串,嘗試轉為 時間類型 看看會有怎樣的結果

from datetime import datetime
from datetime import timedelta


date_time = '2020 01 A'
print(datetime.strptime(date_time, '%Y %m'))

# >>> 執(zhí)行結果如下:
# >>> ValueError: unconverted data remains:  A
# >>> 這里報錯信息為:不知道 A 對應的格式是什么,字符串格式中,我們也沒有對 A 使用格式化方法;
# >>> 同時,date_time 也是一個非標準的時間格式字符串,我們沒有辦法對其進行時間格式的轉換

時間格式符

字符介紹
%Y完成的年份 如2020
%m月份, 1-12
%d月的某一天,1-31
%H一天中的第幾個小時,24小時(00-23)
%I一天中的第幾個小時,12小時(01-12)
%M當前的第幾分鐘(00-59)
%S當前分的第幾秒(00-61) 多出來的兩秒是閏年的
%f 當前秒的第幾毫秒
%a簡化的星期,如Wed
%A完整的星期,如Wednesday
%b簡化的月份,如二月 Feb
%B完整的月份,如二月 February
%c 本地的日期和時間,如 Wed Feb 5 10:14:30 2020
%p 上午或下午;AM 為上午 ,PM為下午
%j一年中的第幾天
%U一年中的星期數

time模塊

在上文我們學習 python 中第一個內置包 datetime (日期時間包),學習了如何使用 datetime 如何獲取當前的日期對象以及日期對象與日期字符串之間的互相轉換。

接下來我們學習一下 python 中的 第一個內置模塊,它也是用來處理時間的,那就是 time 模塊。學會使用 time 模塊,可以豐滿我們對時間的處理。

認識時間戳

什么是時間戳?其實時間戳就是時間,只不過他的起始時間有所不同。

  • 時間戳是從 1970年1月1日00時00分00秒至今的總毫秒(秒)數 ;Python 默認是按秒來計算時間戳的。
  • 在 python 中,用 timestamp 來表示時間戳
  • 在 python 中,時間戳 是一個 float 類型。我們使用 datetime 獲取時間對象是可以看到 年月日、時分秒的;而時間戳展示給我們是從 1970年1月1日00時00分00秒至今的秒數(時間戳可以轉成我們可讀的 年月日、時分秒格式,我們稍后就會學習如何使用)。
  • time 模塊的總體功能就是為了處理時間與轉換格式

time 模塊與它的函數們:

1.時間處理,轉換成時間格式

2.time 函數 ,生成時間戳數

3.localtime 函數,獲取本地時間函數

localtime 函數 需要了解對應的字段介紹

4.sleep 函數 ,暫停/休眠/等待

5.strftime 函數,將時間對象轉為字符串

6.strptime 函數,將時間字符串轉為時間對象

time 模塊的常用方法

# 導入包;
import time

# 使用方法:
time.time()

# 返回值:
# 秒級別的浮點類型

# 示例:
# 1580878485.4009378

注意:每個語言返回的時間戳格式都不太一樣,有的是返回秒級別,有的是返回毫秒級別。無論哪一種,時間都是一樣的,只是 秒 與 毫秒 之間的轉換而已。

獲取本地時間函數 - localtime

# 導入包;
import time

# 使用方法:
time.localtime(timestamp)

# 參數介紹:
# timestamp:可以傳入一個時間戳,傳入后 localtime() 函數會將傳入的時間戳轉為 時間對象。
# 可以不傳入,如果不傳入時間戳;會默認返回當前最新的時間對象。

示例如下:

import time


test_time = time.localtime()

print(test_time)

# >>> 執(zhí)行結果如下:
# >>> time.struct_time(tm_year=2022, tm_mon=3, tm_mday=11, tm_hour=13, tm_min=33, tm_sec=52, tm_wday=4, tm_yday=70, tm_isdst=0)
# >>> 輸出的是 localtime 字段信息

localtime 對應字段信息介紹

屬性名介紹取值范圍
tm_year四位數的年單位1970~∞
tm_mon1~12
tm_mday1~31
tm_hour小時0~23
tm_min分鐘0~59
tm_sec0~61(閏年會多兩秒)
tm_wday一周的第幾天0~6(0是周一)
tm_yday一年的第幾日1~366(支持儒略歷,現(xiàn)用的是格里歷即公歷)
tm_isdst 夏令時-1 或 0 ;1 代表是否是夏時令

來看一下 localtime 函數 的小案例

import time


test_time = time.time()
test_time_obj = time.localtime(test_time)

print(test_time_obj, type(test_time_obj))

# >>> 執(zhí)行結果如下:
# >>> 1578898063.2553177
# >>> time.struct_time(tm_year=2020, tm_mon=1, tm_mday=13, tm_hour=14, tm_min=46, tm_sec=44, tm_wday=4, tm_yday=70, tm_isdst=0) <class 'time.struct_time'>

# >>> 通過這樣的方式,就可以將我們的時間戳轉為 time.struct_time 的時間對象,可讀性會變得很好

上文我們提到過,localtime() 函數內可以不傳入參數,獲取的是當前最新的時間對象。我們也來看一下:

import time


current_time = time.localtime()
print(current_time)

# >>> 執(zhí)行結果如下:
# >>> time.struct_time(tm_year=2022, tm_mon=1, tm_mday=13, tm_hour=14, tm_min=57, tm_sec=47, tm_wday=4, tm_yday=70, tm_isdst=0)

剛剛提到過,我們的 python 獲取的是秒級別的時間戳,如果我們想要獲取 毫秒 級別的時間戳要怎么辦?其實很簽單,我們只需要需要將獲取的時間戳 *1000(乘以1000就可以了)就可以獲取 毫秒級 的時間戳了。

import time


print(time.time())
print(time.time() * 1000)

# >>> 執(zhí)行結果如下:
# >>> 1646982476.7887278
# >>> 1646982476788.7278

# >>> 上下比對一下,發(fā)現(xiàn)我們的 秒級別 時間戳已經變?yōu)榱?毫秒級 的時間戳了

暫停函數 - sleep

sleep():名如其實,該函數會將我們的程序暫停執(zhí)行一段時間。

# 導入包;
import time

# 使用方法:
time.sleep(second)

# 參數介紹:
# second:希望程序被暫停執(zhí)行的秒數

示例如下:

import time


for i in range(5):
    print(i)
    time.sleep(1)
    
# >>> 大家可以在自己電腦上試試運行效果

time 中的 strftime

# 導入包;
import time

# 使用方法:
time.strftime(format, t)

# 參數介紹:
# format:時間的格式化規(guī)范
# t:time.localtime 對應的時間類型

# >>> 其實用法與前文介紹的 datetime 的 strftime 完全一致,只不過對應的對象是 time 的時間對象

示例如下:

import time


str_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
print(str_time)

# >>> 執(zhí)行結果如下:
# >>> 2020-01-13 16:22:21

time 中的 strptime

# 導入包;
import time

# 使用方法:
time.strptime(time_str, format)

# 參數介紹:
# time_str:符合時間格式的字符串
# format:確保與 time_str 一致的格式化標準(字符串的內容都都可以通過 時間格式符 匹配上)

示例如下:

import time


obj_time = time.strptime('2020-01-13', '%Y-%m-%d')
print(obj_time)

# >>> 執(zhí)行結果如下:
# >>> time.struct_time(tm_year=2020, tm_mon=1, tm_mday=13, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=13, tm_isdst=-1)

datetime 中生成時間戳的函數

前文我們在講解 datetime 包的時候,并沒有講解如何使用 datetime 中生成時間戳,現(xiàn)在順著 時間戳部分一起帶出來。

# 導入包;
import datetime

# 使用方法:
now = datetime.datetime.now()
datetime.datetime.timestamp(now)	
# 不同于 time 模塊的 time 函數 的生成 時間戳
# 而是將一個 datetime 對象 轉為時間戳,所以括弧中不傳入參數是會報錯的。

# 參數介紹:
# now:datetime 的時間對象

示例如下:

import datetime


now = datetime.datetime.now()
now_timestamp = datetime.datetime.timestamp(now)

print(now_timestamp, type(now_timestamp))

# >>> 執(zhí)行結果如下:
# >>> 1642067213.882046 <class 'float'>			秒級別的時間戳,浮點類型

datetime 時間戳轉時間對象

# 導入包;
import datetime

# 使用方法:
datetime.datetime.fromtimestamp(timestamp)

# 參數介紹:
# timestamp:時間戳

# 返回值:
# 返回一個 datetimes 的日期對象

示例如下:

import datetime


now = datetime.datetime.now()
now_timestamp = datetime.datetime.timestamp(now)

datetime_obj = datetime.datetime.fromtimestamp(now_timestamp)

print(datetime_obj, type(datetime_obj))

# >>> 執(zhí)行結果如下:
# >>> 2020-01-13 17:43:08.795082  <class 'datetime.datetime'>

可能大家會有個疑問,既然 datetime 包 與 time 模塊的功能很多都是一樣的,那么為什么會有這兩個包和模塊的存在呢?

其實,在實際工作中 datetime 包更多的是對于日期的處理;而 time 模塊更多的則是對時間的處理,比如 時、分、秒 這樣的格式,使用 time 模塊來處理會更合適一些。

到此這篇關于Python學習之時間包使用教程詳解的文章就介紹到這了,更多相關Python時間包內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python發(fā)送byte數據組到tcp的server問題

    python發(fā)送byte數據組到tcp的server問題

    這篇文章主要介紹了python發(fā)送byte數據組到tcp的server問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Python封裝SNMP調用接口的示例代碼

    Python封裝SNMP調用接口的示例代碼

    PySNMP?是一個純粹用Python實現(xiàn)的SNMP,用PySNMP的最抽象的API為One-line?Applications。本文為大家分享了Python封裝SNMP調用接口的示例代碼,需要的可以參考一下
    2022-07-07
  • PyAutoGUI圖形用戶界面自動化的超詳細教程

    PyAutoGUI圖形用戶界面自動化的超詳細教程

    PyautoGUI是一個純Python的自動化工具,能實現(xiàn)用程序自動控制鼠標和鍵盤操作,下面這篇文章主要給大家介紹了關于PyAutoGUI圖形用戶界面自動化的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-04-04
  • Python中IPYTHON入門實例

    Python中IPYTHON入門實例

    這篇文章主要介紹了Python中IPYTHON的用法入門,較為詳細的分析了IPYTHON的配置及使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-05-05
  • Python Flask框架實現(xiàn)簡單加法工具過程解析

    Python Flask框架實現(xiàn)簡單加法工具過程解析

    這篇文章主要介紹了Python Flask框架實現(xiàn)簡單加法工具過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • Python實現(xiàn)播放和錄制聲音的功能

    Python實現(xiàn)播放和錄制聲音的功能

    這篇文章主要介紹了Python實現(xiàn)播放和錄制聲音的功能,幫助大家更好的理解和學習python,感興趣的朋友可以了解下
    2020-08-08
  • django中的自定義分頁器的實現(xiàn)示例

    django中的自定義分頁器的實現(xiàn)示例

    本文主要介紹了django中的自定義分頁器的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • Pyhhon之Pygame的Font文本和字體

    Pyhhon之Pygame的Font文本和字體

    這篇文章主要介紹了Pygame的Font文本和字體,Pygame 通過pygame.font模塊來創(chuàng)建一個字體對象,從而實現(xiàn)繪制文本的目的。想進一步了解的同學可以參考閱讀本文
    2023-04-04
  • 一文帶你了解Python中的type,isinstance和issubclass

    一文帶你了解Python中的type,isinstance和issubclass

    這篇文章主要為大家詳細介紹了Python中的type、isinstance和issubclass的使用,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2023-01-01
  • python 3.6.5 安裝配置方法圖文教程

    python 3.6.5 安裝配置方法圖文教程

    這篇文章主要為大家詳細介紹了python 3.6.5 安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09

最新評論