欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解python如何正確使用時(shí)間戳,日期,時(shí)間,時(shí)區(qū)

 更新時(shí)間:2024年11月03日 13:52:35   作者:仙草哥哥  
這篇文章主要為大家介紹了如何在python中正確使用時(shí)間戳,日期,時(shí)間,時(shí)區(qū),文中通過簡單的示例進(jìn)行了詳細(xì)介紹,希望對大家有一定的幫助

時(shí)間概念

utc與時(shí)區(qū)

UTC是Coordinated Universal Time的縮寫,是全球時(shí)間的標(biāo)準(zhǔn),UTC時(shí)間不受時(shí)區(qū)和夏令時(shí)的影響,是時(shí)間的標(biāo)準(zhǔn)。全球各地的時(shí)間以UTC時(shí)間為參考進(jìn)行調(diào)整。

時(shí)區(qū)是Time Zone,是地球上按照經(jīng)度劃分的區(qū)域,每個(gè)區(qū)域有自己的標(biāo)準(zhǔn)時(shí)間,時(shí)區(qū)與UTC時(shí)間的差距通常以小時(shí)為單位(但有些時(shí)區(qū)偏移的時(shí)間有30分鐘)。整個(gè)地球被劃分為24個(gè)主要時(shí)區(qū),每個(gè)時(shí)區(qū)大約覆蓋15度經(jīng)度(360度/24小時(shí))

北京時(shí)間是東八區(qū),東八區(qū)也就是比UTC時(shí)間偏移了8小時(shí),也就是UTC+8,在世界上,同樣在東八區(qū)的,還有澳大利亞的地區(qū)。

紐約時(shí)間是西五區(qū),也就是UTC-5,因此,距離北京時(shí)間的東八區(qū)標(biāo)準(zhǔn)時(shí)間差是13小時(shí)。但是需要注意的是,當(dāng)紐約地區(qū)開始夏令時(shí)的時(shí)候,會變成UTC-4,此時(shí)就是常見的12小時(shí)時(shí)差了。

東京時(shí)間是東九區(qū),也就是UTC+9,因此,距離北京時(shí)間的東八區(qū)差是1小時(shí),且是早1小時(shí)。

夏令時(shí)

夏令時(shí)是一種人為調(diào)整時(shí)鐘的制度,通常在春季將時(shí)鐘向前調(diào)一個(gè)小時(shí),其目的是延長晚間的日照時(shí)間,旨在更有效地利用日光資源,減少能源消耗。

其中,北半球的高緯度國家通常使用夏令時(shí),因?yàn)槠渚暥雀?,日照變化大。與之相反,接近赤道的地區(qū),日照變化不大,因此通常不用夏令時(shí)。例如大部分亞洲國家,如中國,日本,韓國,都不使用夏令時(shí)。

沒有使用過夏令時(shí)地區(qū)的人,通常對于夏令時(shí)的作用不太了解,具體來說:夏令時(shí)期間,時(shí)鐘被撥快一小時(shí)。這意味著人們按照新的時(shí)間表作息,早上實(shí)際比平時(shí)早起一小時(shí),但由于夏季天亮較早,對生活影響不大。下午下班時(shí),按照新的時(shí)間,天色仍然明亮,人們可以在下班后享受更多的日照時(shí)間。

時(shí)間戳

時(shí)間戳是Timestamp是一種表示特定時(shí)間點(diǎn)的數(shù)字格式,基于UTC時(shí)間的1970年1月1日00:00:00以來經(jīng)過的秒數(shù)或毫秒數(shù)來表示,時(shí)間戳可以精確地標(biāo)識一個(gè)具體的時(shí)間點(diǎn),該時(shí)間點(diǎn)不受時(shí)區(qū)影響。

時(shí)間戳在編程中有很大作用,例如,記錄某個(gè)系統(tǒng)事件,用戶注冊的時(shí)間,或者通過計(jì)算時(shí)間戳的差,來計(jì)算時(shí)間間隔。

time

通用格式化

time主要處理時(shí)間的獲取和簡單的格式化,如果需要更復(fù)雜的日期和時(shí)間操作,應(yīng)該嘗試使用datetime

常用的格式化字符串方式如下所示,并且datetime中同樣也這樣使用

  • %Y:四位年份
  • %m:兩位月份(01-12)
  • %d:兩位日期(01-31)
  • %H:兩位小時(shí)(00-23)
  • %M:兩位分鐘(00-59)
  • %S:兩位秒(00-59)

時(shí)間戳

獲取當(dāng)前時(shí)間戳

import time
 
timestamp = time.time()
print("當(dāng)前時(shí)間戳:", timestamp)

時(shí)間戳可以用于記錄時(shí)間間隔,不過,如果要更精準(zhǔn)的計(jì)時(shí)可以用

import time
 
start = time.perf_counter()
time.sleep(2)
end = time.perf_counter()
print(f"操作耗時(shí): {end - start} 秒")

時(shí)間戳轉(zhuǎn)為時(shí)間對象

時(shí)間戳轉(zhuǎn)換為struct_time本地時(shí)間

timestamp = time.time()
local_time = time.localtime(timestamp)
print("本地時(shí)間:", local_time)

將時(shí)間戳轉(zhuǎn)換為utc時(shí)間

timestamp = time.time()
utc_time = time.gmtime(timestamp)
print("UTC時(shí)間:", utc_time)

時(shí)間對象轉(zhuǎn)為時(shí)間戳

import time
 
struct = time.strptime("2024-11-02 22:00:00", "%Y-%m-%d %H:%M:%S")
timestamp = time.mktime(struct)
print("時(shí)間戳:", timestamp)  # 時(shí)間戳: 1730556000.0

時(shí)間格式化

將一個(gè)時(shí)間戳快速轉(zhuǎn)為可讀時(shí)間

timestamp = time.time()
readable_time = time.ctime(timestamp)
print(readable_time)  # 格式如Sat Nov  2 10:32:27 2024

根據(jù)時(shí)間字符串,創(chuàng)建時(shí)間對象

time_str = "2024-11-02 22:00:00"
parsed_time = time.strptime(time_str, "%Y-%m-%d %H:%M:%S")
 
print(parsed_time)

根據(jù)時(shí)間對象,轉(zhuǎn)為字符串

time_str = "2024-11-02 22:00:00"
parsed_time = time.strptime(time_str, "%Y-%m-%d %H:%M:%S")
 
formatted_time = time.strftime("%Y年%m月%d日%H點(diǎn)%M分", parsed_time)
print("格式化時(shí)間:", formatted_time)  # 格式化時(shí)間:2024年11月02日22點(diǎn)00分

時(shí)間暫停

時(shí)間是不會暫停的,實(shí)際上該功能是程序暫停

import time
 
print("暫停前")
time.sleep(3)  # 暫停3秒
print("暫停后")

datetime

date日期

獲取當(dāng)前日期

today = datetime.date.today()
print("今天的日期:", today)  # 格式如2024-11-02

datetime日期時(shí)間

獲取當(dāng)前時(shí)間

now_time = datetime.datetime.now().time()
print("當(dāng)前時(shí)間:", now_time)  # 格式如10:46:50.506231

獲取當(dāng)前日期與時(shí)間

now = datetime.datetime.now()
print("當(dāng)前日期和時(shí)間:", now)  # 格式如2024-11-02 10:47:44.299445

獲取UTC時(shí)間

utc_now = datetime.datetime.utcnow()
print("UTC時(shí)間:", utc_now)

創(chuàng)建日期時(shí)間對象

創(chuàng)建日期對象

specific_date = datetime.date(2024, 11, 2)
print("特定日期:", specific_date)

創(chuàng)建時(shí)間對象

specific_time = datetime.time(22, 0, 0)
print("特定時(shí)間:", specific_time)

創(chuàng)建日期時(shí)間對象

specific_datetime = datetime.datetime(2024, 11, 2, 22, 0, 0)
print("特定日期和時(shí)間:", specific_datetime)

時(shí)間字符串格式化與解析

時(shí)間字符串格式化

now = datetime.datetime.now()
formatted = now.strftime("%Y-%m-%d %H:%M:%S")
print("格式化日期時(shí)間:", formatted)

時(shí)間字符串解析

time_str = "2024-11-2 22:00:00"
parsed_datetime = datetime.datetime.strptime(time_str, "%Y-%m-%d %H:%M:%S")
print("解析后的日期時(shí)間對象:", parsed_datetime)

時(shí)間間隔

使用timedelta計(jì)算時(shí)間間隔的日期

from datetime import date, timedelta
 
today = date.today()
future_date = today + timedelta(days=10)
print("10天后的日期:", future_date)
 
past_date = today - timedelta(weeks=1)
print("一周前的日期:", past_date)

計(jì)算時(shí)間間隔的日期時(shí)間

from datetime import datetime, timedelta
 
now = datetime.now()
 
future_time = now + timedelta(minutes=10)
print("10分鐘后的日期時(shí)間:", future_time)
 
past_time = now - timedelta(hours=2)
print("2小時(shí)前的日期時(shí)間:", past_time)

zoneinfo

時(shí)間轉(zhuǎn)換

在python 3.9以后,引入了zoneinfo用于處理時(shí)區(qū),并且能夠直接用于datetime

from datetime import datetime
from zoneinfo import ZoneInfo
 
now_utc = datetime.now(ZoneInfo("UTC"))
print("UTC時(shí)間:", now_utc)
 
# 轉(zhuǎn)換為北京時(shí)間
now_beijing = now_utc.astimezone(ZoneInfo("Asia/Shanghai"))
print("北京時(shí)間:", now_beijing)
 
# 轉(zhuǎn)換為紐約時(shí)間
now_newyork = now_utc.astimezone(ZoneInfo("America/New_York"))
print("紐約時(shí)間:", now_newyork)

實(shí)際上,時(shí)間轉(zhuǎn)換也可以自行進(jìn)行計(jì)算,例如,我們已經(jīng)了解了北京時(shí)間是UTC+8,紐約時(shí)間是UTC-5

from datetime import datetime, timedelta
 
now_utc = datetime.utcnow()
print("UTC時(shí)間:", now_utc)
 
now_beijing = now_utc + timedelta(hours=8)
print("北京時(shí)間:", now_beijing)
 
now_newyork = now_utc - timedelta(hours=5)
print("紐約時(shí)間:", now_newyork)

列出所有時(shí)區(qū)

所有時(shí)區(qū)

import zoneinfo
 
print(zoneinfo.available_timezones())

遍歷找到其中的Asia時(shí)區(qū)

import zoneinfo
 
for zone in zoneinfo.available_timezones():
    if "Asia" in zone:
        print(zone)

獲取時(shí)區(qū)時(shí)間

如果在使用當(dāng)前時(shí)間的時(shí)候,總是自行設(shè)置本地時(shí)區(qū)的時(shí)間,而不依賴于機(jī)器設(shè)置,可以獲得更好的跨平臺性

from datetime import datetime
from zoneinfo import ZoneInfo
 
tz_shanghai = ZoneInfo("Asia/Shanghai")
tz_newyork = ZoneInfo("America/New_York")
 
now_shanghai = datetime.now(tz_shanghai)
now_newyork = datetime.now(tz_newyork)
 
print("北京時(shí)間:", now_shanghai)
print("紐約時(shí)間:", now_newyork)

以上就是詳解python如何正確使用時(shí)間戳,日期,時(shí)間,時(shí)區(qū)的詳細(xì)內(nèi)容,更多關(guān)于python時(shí)間的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論