Python 時間和日期操作


一,時間概念

GMT格林威治標准時間(0時區時間)。

UTC:世界標准時間,與GMT相比加入了閏秒時間,通常作為是世界上調節時鍾和時間的主要時間標准。

LT:Local Time的縮寫,表示本地時間,通常為UTC或者GMT時間加上時區(東時區為正,西時區為負)。

二,時間操作

1,時間形式:

  (1)timestamp時間戳,時間戳表示的是從1970年1月1日00:00:00開始按秒計算的偏移量

  (2)struct_time時間元組,即struct_time類

  (3)format time 格式化時間,已格式化的結構使時間更具可讀性。包括自定義格式和固定格式。

  (4)標准時間字符串,國際通用時間字符串,格式為:星期縮寫 月份縮寫 日 時:分:秒 年,如:Mon Sep 20 17:02:25 2021

2,函數說明:

函數名 參數說明 功能說明

 time

  獲取當前本地timestamp時間戳(秒),python2的精度為秒,python3的精度可以達到微妙
time_ns   獲取當前本地timestamp時間戳(納秒數),僅python3有
localtime

seconds:timestamp時間戳(秒),默認值為None

將timestamp時間戳轉換成struct_time,如果為None則為當前時間

mktime p_tuple:struct_time時間戳 將struct_time時間戳轉換成timestamp(秒)
ctime seconds:timestamp時間戳(秒) 將timestamp時間戳轉換成標准時間字符串
asctime p_tuple:struct_time時間戳 將struct_time時間戳轉換成標准時間字符串
gmtime

seconds:timestamp時間戳(秒),默認值為None

根據timestamp時間戳獲取UTC的struct_time時間戳,如果為None則為當前時間

sleep

seconds:timestamp時間戳(秒)

睡眠函數,可為小數,表示毫秒

strftime

format:格式化字符串
p_tuple:struct_time時間戳

 將struct_time時間戳根據format轉換成format_time格式化時間
strptime

string:format_time格式化時間
format:格式化字符串

 將format_time格式化時間根據format轉換成struct_time時間戳

3,format格式化說明:

格式 含義
%a 本地(locale)簡化星期名稱
%A 本地完整星期名稱
%b 本地簡化月份名稱
%B 本地完整月份名稱
%c 本地相應的日期和時間表示
%d 一個月中的第幾天(01 - 31)
%H 一天中的第幾個小時(24小時制,00 - 23)
%I 第幾個小時(12小時制,01 - 12)
%j 一年中的第幾天(001 - 366)
%m 月份(01 - 12)
%M 分鍾數(00 - 59)
%p 本地am或者pm的相應符
%S 秒(01 - 61)
%U 一年中的星期數。(00 - 53星期天是一個星期的開始。)第一個星期天之前的所有天數都放在第0周。
%w 一個星期中的第幾天(0 - 6,0是星期天)
%W 和%U基本相同,不同的是%W以星期一為一個星期的開始。
%x 本地相應日期
%X 本地相應時間
%y 去掉世紀的年份(00 - 99)
%Y 完整的年份
%Z 時區的名字(如果不存在為空字符)

4,struct_time說明:

屬性                              值
tm_year(年)                    比如2011 
tm_mon(月)                     1 - 12
tm_mday(日)                    1 - 31
tm_hour(時)                    0 - 23
tm_min(分)                     0 - 59
tm_sec(秒)                     0 - 61
tm_wday(weekday)               0 - 6(0表示周日)
tm_yday(一年中的第幾天)          1 - 366
tm_isdst(是否是夏令時)           默認為-1
tm_gmtoff(到UTC時間時間差,秒數)
tm_zone(時區)

5,基礎操作:

 1 import time
 2 
 3 # 獲取當前timestamp時間戳
 4 print("time:", time.time())
 5 print("time_ns:", time.time_ns())
 6 
 7 # timestamp轉struct_time
 8 print("localtime:", time.localtime())
 9 
10 # timestamp轉標准時間
11 print("ctime:", time.ctime())
12 # struct_time轉標准時間
13 print("ctime:", time.asctime())
14 
15 # struct_time轉timestamp
16 x = time.localtime()
17 print("mktime:", time.mktime(x))
18 
19 # timestamp轉UTC時間
20 print("gmtime:", time.gmtime(time.mktime(x)))
21 
22 # struct_time轉format_time
23 s = time.strftime("%Y %m %d %H:%M:%S %Z", x)
24 print("strftime:", s)
25 
26 # format_time轉struct_time
27 print("strptime:", time.strptime(s, "%Y %m %d %H:%M:%S %Z"))

三,日期操作

日期操作模塊為datetime,其右date(年月日)和time(時分秒)組成

1,主要函數說明:

函數名 參數說明 功能說明 函數類型
new tz:時區信息(需要實現tzinfo基類,跨時區操作時需要),默認None為當前時區 根據當前本地時間生成datetime對象 類函數
utcnew   生成當前utc日期的datetime對象 類函數
combin

date:日期對象(年,月,日)

time:  時間對象(時,分,秒,毫秒)

根據日期和時間構建datetime對象 類函數
fromtimestamp

t:timestamp時間戳

tz:時區信息,默認None為當前時區

根據timestamp構建datetime對象 類函數
utcfromtimestamp t:timestamp時間戳 根據timestamp時間戳構建utc日期的datetiem對象 類函數
fromisoformat date_string:datetime日期字符串(如:2021-12-23 12:00:00.123456) 根據日期字符串生成datetime對象 類函數
timestamp   將datetime對象轉換成timestamp時間戳 對象函數
timetuple  

將datetime對象轉換成struct_time時間戳

對象函數
utctimetuple   將datetime對象轉換成utc的struct_time時間戳 對象函數
replace year,month,day,hour,minute,second,microsecond 替換datetime對對應的指 對象函數
ctime   將datetime對象轉換成標准時間字符串 對象函數
date   根據datetime對象獲取date對象值 對象函數
time   根據datetime對象獲取time對象值 對象函數
isoformat   生成datetime日期字符串 對象函數
strftime fmt:格式化日期字符串 根據fmt格式化字符串將datetime對象轉換成時間字符串(time.strftime) 對象函數
strptime

date_string:日期字符串

format:格式花字符串

根據format將時間字符串轉換成datetime對象(同time.strptime) 類函數

2,主要屬性:

  year :年,month:月,day:日

  hour:時,minute:分,second:秒,microsecond:毫秒

3,基本操作:

import datetime
import time

# 獲取當前日期
x = datetime.datetime.now()
print("datetime:", x)
print("year:{0}, month:{1}, day:{2}, hour:{3}, minute:{4}, second:{5}, microsecond:{6}".
      format(x.year, x.month, x.day, x.hour, x.minute, x.second, x.microsecond))

# 獲取當前UTC日期
print("utcnow:", datetime.datetime.utcnow())

# 根據date和time合成datetime對象
dt = datetime.date(2021, 10, 5)
tm = datetime.time(10, 12, 32, 123456)
print("combine:", datetime.datetime.combine(dt, tm))

# 根據timestamp生成datetime對象
t = time.time()
print("fromtimestamp:", datetime.datetime.fromtimestamp(t))
print("utcfromtimestamp:", datetime.datetime.utcfromtimestamp(t))

# 根據日期字符串生成datetime對象
print("fromisoformat:", datetime.datetime.fromisoformat("2021-02-20 22:14:26.000389"))

# 根據格式化輸出時間字符串
s = x.strftime("%Y %m %d %H:%M:%S")
print("strftime:", s)

# 根據格式化將時間字符串構成datetime對象
print("strptime:", datetime.datetime.strptime(s, "%Y %m %d %H:%M:%S"))

# 運行結果如下:
# datetime: 2021-09-20 23:01:01.950272
# year:2021, month:9, day:20, hour:23, minute:1, second:1, microsecond:950272
# utcnow: 2021-09-20 15:01:01.950272
# combine: 2021-10-05 10:12:32.123456
# fromtimestamp: 2021-09-20 23:01:01.950273
# utcfromtimestamp: 2021-09-20 15:01:01.950273
# fromisoformat: 2021-02-20 22:14:26.000389
# strftime: 2021 09 20 23:01:01
# strptime: 2021-09-20 23:01:01

四,日期計算

日期計算主要為日期的加減計算和比較

支持的比較運算有:>,>=,<,<=,!=,==

1,基本操作:

import datetime

# 日期比較
x = datetime.datetime.now()
dt = datetime.date(2000, 10, 10)
tm = datetime.time(12, 0, 0, 111111)
x2 = datetime.datetime.combine(dt, tm)
print("x:", x, ", x2:", x2, ", x>x2:", x>=x2)

# 日期計算
print("x+2days:", x+datetime.timedelta(days=2))
print("x-2days:", x-datetime.timedelta(days=2))
print("x+1week:", x+datetime.timedelta(weeks=1))print("x-1week:", x-datetime.timedelta(weeks=1))
print("x+10hours:", x+datetime.timedelta(hours=10))

# 運行結果
# x: 2021-09-20 23:28:13.401656 , x2: 2000-10-10 12:00:00.111111 , x>x2: True
# x+2days: 2021-09-22 23:28:13.401656
# x-2days: 2021-09-18 23:28:13.401656
# x+1week: 2021-09-27 23:28:13.401656
# x-1week: 2021-09-13 23:28:13.401656
# x+10hours: 2021-09-21 09:28:13.401656

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM