時間模塊time和datetime的使用

日期和時間

一 time模塊

import time

時間的表示形式:html

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

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

(一) 格式化日期的函數

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

例子:計算一我的活了多久函數

2、日曆(Calendar)模塊

calendar.isleap(year)
是閏年返回 True,不然爲 false。spa

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是每星期的行數。code

獲取某月日曆
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模塊的接口更直觀,更容易調用htm

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 datetimeprint (datetime.datetime.now()+datetime.timedelta(days=-1)).strftime("%Y-%m-%d %H:%M:%S")# 2018-05-07 16:56:59能夠把days改成hours minutes,就能夠提早XX小時/分鐘了。

相關文章
相關標籤/搜索