時間模塊time和datetime的使用


日期和時間

一 time模塊

import time

時間的表示形式:

時間戳 時間戳是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總秒數。

以整型或浮點型表示時間的一個以秒為單位的時間間隔。這個時間間隔的基礎值是從1970年1月1日開始算起

(一) 格式化日期的函數

time.time() 當前時間戳(秒數) UNIX和Windows只支持到2038年。
time.localtime() 接收時間輟(1970紀元后經過的浮點秒數)並返回當地時間下的時間元組 (0是周一)
time.strftime("%Y-%m-%d %H:%M:%S"[,time.localtime()]) 格式化成2016-03-20 11:45:39形式 第二個參數可有可無
time.asctime() 返回格式化后的英文文本的時間
time.mktime(tupletime) 接受時間元組並返回時間輟
time.sleep(secs) 推遲調用線程的運行,secs指秒數。
time.clock() 用以浮點數計算的秒數返回當前的CPU時間。用來衡量不同程序的耗時,比time.time()更有用。
time.strptime(“2013-10-10 23:40:00”, "%Y-%m-%d %H:%M:%S") 將其轉換為時間元組

mktime的例子

import time t = (2016, 2, 17, 17, 3, 38, 1, 48, 0) secs = time.mktime( t ) print ("time.mktime(t) : %f" % secs)#time.mktime(t) : 1455699818.000000 time.strptime(“2013-10-10 23:40:00”, "%Y-%m-%d %H:%M:%S") time = time.mktime(time.strptime("2013-10-10 23:40:00", "%Y-%m-%d %H:%M:%S")) print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time))) 

計算程序運行的時間

import time def procedure(): for i in range(10000): pass # time.clock t0 = time.clock() procedure() print (time.clock() - t0) # time.time t0 = time.time() procedure() print (time.time() - t0) 

(二) python中時間日期格式化符號

%Y 4位的年 %y 2位的年
%m 月份(01-12) %d 月內中的一天(0-31)
%H 24小時制小時數(0-23) %I 12小時制小時數(01-12)
%M 分鍾數(00=59) %S 秒(00-59)
%a 本地簡化星期名稱 英文文本 簡化 %A c本地簡化星期名稱 英文文本 完整
%j 年內的一天(001-366) %w 星期(0-6),星期天為星期的開始 (0是周一)
%x 本地相應的日期表示 (08/02/17) %X 本地相應的時間表示 23:48:34

例子:計算一個人活了多久

二、日歷(Calendar)模塊

calendar.isleap(year)
是閏年返回 True,否則為 false。

import calendar print(calendar.isleap(2000)) True print(calendar.isleap(1900)) False 

calendar.leapdays(y1,y2)
返回在Y1,Y2兩年之間的閏年總數。

calendar.month(year,month,w=2,l=1)
返回一個多行字符串格式的year年month月日歷,兩行標題,一周一行。每日寬度間隔為w字符。每行的長度為7* w+6。l是每星期的行數。

獲取某月日歷
import calendar cal = calendar.month(2016, 1) print ("以下輸出2016年1月份的日歷:") print (cal) 例子:Python 生成日歷 # 引入日歷模塊 import calendar # 輸入指定年月 yy = int(input("輸入年份: ")) mm = int(input("輸入月份: ")) # 顯示日歷 print(calendar.month(yy,mm)) 

三 datetime模塊

import datetime

datetime比time高級了不少,可以理解為datetime基於time進行了封裝,提供了各位使用的函數,datetime模塊的接口更直觀,更容易調用

from datetime import datetime 本地時間 datetime.now() #2017-08-03 00:13:00.690975 utc時間 datetime.utcnow() #獲取指定時間 d2 = datetime.datetime(1999, 10, 1, 10, 28, 25, 123456) #年月日 時分秒 微妙數 1999-10-01 10:28:25.000001 #沒有微妙數 省略 d2 = datetime.datetime(1999, 10, 1, 10, 28, 25) #1999-10-01 10:28:25 

datetime 轉換成時間戳

把一個datetime類型轉換為timestamp['taɪmstæmp]只需要簡單調用timestamp()方法:

>>> from datetime import datetime >>> dt = datetime(2015, 4, 19, 12, 20) # 用指定日期時間創建datetime >>> dt.timestamp() # 把datetime轉換為timestamp datetime.now().timestamp() 1429417200.0 

注意Python的timestamp是一個浮點數。如果有小數位,小數位表示毫秒數。

timestamp轉換為datetime

要把timestamp轉換為datetime,使用datetime提供的fromtimestamp()方法:

>>> from datetime import datetime >>> t = 1429417200.0 >>> print(datetime.fromtimestamp(t)) 2015-04-19 12:20:00 

注意到timestamp是一個浮點數,它沒有時區的概念,而datetime是有時區的。上述轉換是在timestamp和本地時間做轉換。

timestamp也可以直接被轉換到UTC標准時區的時間:

>>> from datetime import datetime >>> t = 1429417200.0 >>> print(datetime.fromtimestamp(t)) # 本地時間 2015-04-19 12:20:00 >>> print(datetime.utcfromtimestamp(t)) # UTC時間 2015-04-19 04:20:00 

str轉換為datetime

很多時候,用戶輸入的日期和時間是字符串,要處理日期和時間,首先必須把str轉換為datetime。轉換方法是通過datetime.strptime()實現,需要一個日期和時間的格式化字符串:

>>> from datetime import datetime >>> cday = datetime.strptime('2015-6-1 18:19:59', '%Y-%m-%d %H:%M:%S') >>> print(cday) 2015-06-01 18:19:59 

字符串'%Y-%m-%d %H:%M:%S'規定了日期和時間部分的格式。詳細的說明請參考Python文檔

注意轉換后的datetime是沒有時區信息的。

datetime轉換為str

如果已經有了datetime對象,要把它格式化為字符串顯示給用戶,就需要轉換為str,轉換方法是通過strftime()實現的,同樣需要一個日期和時間的格式化字符串:

>>> from datetime import datetime >>> now = datetime.now() >>> print(now.strftime('%a, %b %d %H:%M')) Mon, May 05 16:28 

Python 獲取昨天日期

# 引入 datetime 模塊 import datetime def getYesterday(): today=datetime.date.today() oneday=datetime.timedelta(days=1) yesterday=today-oneday return yesterday # 輸出 print(getYesterday())

四.時間加減問題

當前日期時間

import datetime
print datetime.datetime.now()
# 2018-05-08 16:53:30.101000

格式化時間

import datetime
print datetime.datetime.now().strftime("%Y-%m-%d %H:%M")
# 2018-05-08 16:54

多加一天

import datetime
print (datetime.datetime.now()+datetime.timedelta(days=1)).strftime("%Y-%m-%d %H:%M:%S")
# 2018-05-09 16:56:07

減一天

import datetime
print (datetime.datetime.now()+datetime.timedelta(days=-1)).strftime("%Y-%m-%d %H:%M:%S")
# 2018-05-07 16:56:59

可以把days改為hours minutes,就可以提前XX小時/分鍾了。

 


免責聲明!

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



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