因為測試需要,最近2天重新整理了一遍從ftp下載原始數(shù)據(jù)文件及分析數(shù)據(jù)的腳本,發(fā)現(xiàn)對時間方面的處理不是很順暢,查了不少資料及API文檔

在python中關(guān)于時間處理主要用到2個模塊,即datetime、time庫。補充一點: 學(xué)習(xí)一個庫,直接查看API文檔是最快捷的方式,即 python3 -m pydoc -b
-
time
- time(),返回從1970年1月1日至今的秒數(shù),浮點類型
-
gmtime(),將秒數(shù)轉(zhuǎn)化成utc 時間的元組,參數(shù)可默認,可指定,默認傳入的秒數(shù)為當(dāng)前時間的秒數(shù),轉(zhuǎn)化后的元組格式如:
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=19, tm_hour=7, tm_min=35, tm_sec=2, tm_wday=2, tm_yday=200, tm_isdst=0) -
localtime(),將秒數(shù)轉(zhuǎn)化成當(dāng)前位置時區(qū)的時間元組,參數(shù)可默認,可指定,默認是返回當(dāng)前時間的時間元組。用法類似
gmtime(),區(qū)別為返回的元組,localtime()返回當(dāng)前位置時區(qū)的時間元組,加上了時區(qū),gmtime()為utc時間元組,即0時區(qū) -
asctime(),將時間元組轉(zhuǎn)化成字符串類型,參數(shù)默認是當(dāng)前時間,可指定,返回結(jié)果格式類似
Wed Jul 19 15:46:13 2017 - mktime(),將時間元組轉(zhuǎn)化成秒數(shù),需指定參數(shù),返回結(jié)果為浮點類型
- strftime(format[, [tuple])將時間元組轉(zhuǎn)化成指定格式的字符串,格式說明見后面的附錄
- strptime(string, format)將時間字符串按照指定格式轉(zhuǎn)化成時間元組,約束了輸入的時間格式
**綜上所述: **
產(chǎn)生時間元組的方法:gmtime()、localtime()、strptime()
產(chǎn)生秒數(shù)(此處為浮點型)的方法:time()、mktime()
將時間用字符串格式表示的方法:strftime()、asctime()
示例:
將指定時間字符串轉(zhuǎn)化成utc時間
import time
def getUTCTime(ptime):#輸入的時間格式要求:'%Y/%m/%d %H:%M'
time_tuple=time.strptime(ptime,'%Y/%m/%d %H:%M')
seconds=time.mktime(time_tuple)
utc_tuple=time.gmtime(seconds)
formattime=time.strftime("%Y-%m-%d %H:%M",utc_tuple)
print(time_tuple)
print(seconds)
print(utc_tuple)
print(formattime)
getUTCTime("2017/12/2 23:55")
#結(jié)果
time.struct_time(tm_year=2017, tm_mon=12, tm_mday=2, tm_hour=23, tm_min=55, tm_sec=0, tm_wday=5, tm_yday=336, tm_isdst=-1)
1512230100.0
time.struct_time(tm_year=2017, tm_mon=12, tm_mday=2, tm_hour=15, tm_min=55, tm_sec=0, tm_wday=5, tm_yday=336, tm_isdst=0)
2017-12-02 15:55
附錄:
轉(zhuǎn)化格式說明,直接摘錄了一篇博客,便于后續(xù)使用時再去查找,這里寫得比API文檔更為詳細,感謝!同時附上博客地址:http://blog.csdn.net/chuan_day/article/details/73692278
%a 本地星期的短名稱 如:Sun, Mon, ..., Sat (en_US); So, Mo, ..., Sa (de_DE)
%A 本地星期全名稱 如 :Sunday, Monday, ..., Saturday (en_US);Sonntag, Montag, ..., Samstag (de_DE)
%w 星期的數(shù)字表示,0表示周日,6表示周六 如:0,1,2,,,6
%d 日的數(shù)字表示,并且使用0來填補(0-9),如:01, 02, ..., 31
%b 月份的短名稱顯示,英文單詞簡寫,如:Jan, Feb, ..., Dec (en_US);Jan, Feb, ..., Dez (de_DE)
%B 月份的全名稱顯示,如:January, February, ..., December (en_US);Januar, Februar, ..., Dezember (de_DE)
%m 月份數(shù)字顯示,并且用0來補全,如:01, 02, ..., 12
%y 年份的數(shù)字表示,兩位表示,如:00, 01, ..., 99
%Y 年份的數(shù)字表示,四位表示,如:0001, 0002, ..., 2013, 2014, ..., 9998, 9999
%H 24小時制表示,如:00, 01, ..., 23
%I 12小時制表示,如:01, 02, ..., 12
%p 上下午的表示,如:AM,PM
%M 分鐘,并且用0補全(0-9),如:00, 01, ..., 59
%S 秒鐘,并且用0補全(0-9),如:00, 01, ..., 59
%f 微妙表示,如:000000, 000001, ..., 999999
%z 時區(qū)偏移量,如:(empty), +0000, -0400, +1030
%Z 時區(qū)名稱,如:(empty), UTC, EST, CST
%j 全年中的哪一個,用0補全,如:001, 002, ..., 366
%U 全年中的第幾個星期,sunday為第一天如:00, 01, ..., 53
%W 全年中的第幾個星期,monday為第一天如:00, 01, ..., 53
%c 本地時間,如:06/24/17 15:43:10
%x 本地日期,如:08/16/88 (None);
%X 本地時間,如:21:30:00 (en_US);
%% %符號