1. 程式人生 > >python3中關於時間格式的操作

python3中關於時間格式的操作

lee strftime 結構化 參數 時間戳 使用 輸出時間 格式化輸出 ubuntu

在寫python時,很多時候需要用的時間函數,如:記錄當前時間,以時間命名文件,或是比較時間的先後等,這裏記錄一下關於常用時間模塊的方法。

環境:
ubuntu16.04
python3.5.2

用到兩個模塊:time 和 datetime

時間戳 1970年1月1日之後的秒,即:time.time()
格式化的字符串 2014-11-11 11:11, 即:time.strftime(‘%Y-%m-%d‘)
結構化時間 元組包含了:年、日、星期等... time.struct_time 即:time.localtime()

時間戳可用於計算,結構化也可用於計算。

time模塊:

time.clock()
這個方法資料說明是這樣的:

浮點數計算的秒數返回當前的CPU時間。用來衡量不同程序的耗時,比time.time()更有用。這個需要註意,在不同的系統上含義不同。在UNIX系統上,它返回的是"進程時間",它是用秒表示的浮點數(時間戳)。而在WINDOWS中,第一次調用,返回的是進程運行的實際時間。而第二次之後的調用是自第一次調用以後到現在的運行時間。(實際上是以WIN32上QueryPerformanceCounter()為基礎,它比毫秒表示更為精確)

我理解是,這個一般用來計算程序占用cpu的時間,在unix系統上,類似返回cpu的工時,完成操作花了多久,而在windows上可以用差值的方法同樣得出工時。

>> time.clock()
3.282732

time.time()
這個返回當前時間的時間戳(1970紀元後經過的浮點秒數)。

>> time.time()
1515849662.0594246

也可用前後差值來計算程序的時間。

time.mktime()
接受9個元素的元組,返回時間戳。

time.altzone
返回格林威治西部的夏令時地區的偏移秒數。如果該地區在格林威治東部會返回負值(如西歐,包括英國)。對夏令時啟用地區才能使用。

>> time.altzone
-28800
>> time.altzone / 3600
-8.0

time.ctime()

這個函數接受秒數的參數,以1970紀元為節點,會返回一個較完整的時間描述字符串格式,如參數為空,則默認參數是time.time()。

>> time.ctime(1000)
‘Thu Jan 1 08:16:40 1970‘

>> time.ctime()
‘Sat Jan 13 21:24:00 2018‘

time.localtime()
這個函數接受一個時間戳,返回格式化為本地時間,後面帶指定方法返回數值類型:

>> time.localtime()
time.struct_time(tm_year=2018, tm_mon=1, tm_mday=13, tm_hour=21, tm_min=43, tm_sec=45, tm_wday=5, tm_yday=13, tm_isdst=0)
>> time.localtime().tm_yday
13

time.asctime()
這個函數接受一組9個元素的元組參數,參數也可是time.localtime()的返回,返回的結果是可讀的時間描述字符串, 如參數為空,默認返回當前的時間。

>> time.asctime()
‘Sat Jan 13 21:34:19 2018‘

time.strftime()
格式化輸出時間字符串,需要參數:
%y 兩位數的年份表示(00-99)
%Y 四位數的年份表示(000-9999)
%m 月份(01-12)
%d 月內中的一天(0-31)
%H 24小時制小時數(0-23)
%I 12小時制小時數(01-12)
%M 分鐘數(00=59)
%S 秒(00-59)
%a 本地簡化星期名稱
%A 本地完整星期名稱
%b 本地簡化的月份名稱
%B 本地完整的月份名稱
%c 本地相應的日期表示和時間表示
%j 年內的一天(001-366)
%p 本地A.M.或P.M.的等價符
%U 一年中的星期數(00-53)星期天為星期的開始
%w 星期(0-6),星期天為星期的開始
%W 一年中的星期數(00-53)星期一為星期的開始
%x 本地相應的日期表示
%X 本地相應的時間表示
%Z 當前時區的名稱
%% %號本身

>> time.strftime("%Y/%m/%d_%H:%M:%S")
‘2018/01/13_21:37:01‘
>> time.strftime("%Y%m%d%H%M%S")
‘20180113213718‘

time.strptime()
匹配時間字符串為表示時間的數值,需要兩個參數:

>> time.strptime(‘20180113213718‘,"%Y%m%d%H%M%S")
time.struct_time(tm_year=2018, tm_mon=1, tm_mday=13, tm_hour=21, tm_min=37, tm_sec=18, tm_wday=5, tm_yday=13, tm_isdst=-1)

time.sleep()
接受浮點型或整型的值,可讓線程等待指定秒數的時間。

datetime函數:

暫時只用到了datetime.datetime.now() 和 datetime.datetime.strptime():

>> datetime.datetime.now()
datetime.datetime(2018, 1, 13, 22, 4, 27, 857289)
>> datetime.datetime.strptime(‘20180113222027‘, ‘%Y%m%d%H%M%S‘)
datetime.datetime(2018, 1, 13, 22, 20, 27)
>> f = datetime.datetime.strptime(‘20180113222027‘, ‘%Y%m%d%H%M%S‘)
>> n = datetime.datetime.now()
>> f -n
datetime.timedelta(0, 795, 29355)
>> c = f -n
>> c.seconds
795
>> c.days
0
很明顯,相減的差值,第一個元素是天,第二個是秒。

python3中關於時間格式的操作