在Python中,和時間處理相關的模塊有time,datatime,calendar(不經常使用)三個。函數
UTCC(Coordinated Universal Time,世界協調時)亦即格林威治天文時間,世界標準時間。在中國爲UTC+8。DST(Daylight Saving Time)即夏令時。spa
在Python中時間的表示方式分三種:操作系統
>>> time.time() 1521948761.733449 >>> type(time.time()) <class 'float'>
>>> import time >>> time.strftime('%Y-%m-%d') '2018-03-25'
>>> import time >>> time.localtime() time.struct_time( tm_year=2018, # 年 tm_mon=2, # 月 tm_mday=26, # 日 tm_hour=2, # 時 tm_min=47, # 分 tm_sec=49, # 秒 tm_wday=0, # 星期幾(0表明星期日) tm_yday=57, # 一年中第幾天 tm_isdst=0) # 是否夏令時,默認是-1
time模塊 |
time經常使用方法:線程
>>> time.time() # 返回當前時間的時間戳(按秒計算的浮點數),從1970到如今的秒數 1521948276.9173918 >>> time.localtime() # 打印本地時間(操做系統時間) time.struct_time(tm_year=2018, tm_mon=3, tm_mday=25, tm_hour=11, tm_min=22, tm_sec=27, tm_wday=6, tm_yday=84, tm_isdst=0) >>> time.gmtime() # 打印格林威治時間(比北京時間晚8個小時) time.struct_time(tm_year=2018, tm_mon=3, tm_mday=25, tm_hour=3, tm_min=55, tm_sec=55, tm_wday=6, tm_yday=84, tm_isdst=0) time.mktime() # 把一個時間對象轉化爲時間戳 >>> time.mktime(time.localtime()) 1521950235.0 time.sleep() # 線程推遲指定的時間運行,單位爲秒 time.asctime() # 把一個表示時間的元祖或struct time轉換表示形式 >>> time.asctime() # 若是沒有參數將time.localtime做爲參數傳入 'Mon Feb 26 10:59:10 2018' time.ctime() # 把一個時間戳轉化爲time_asctime()形式,默認以time.time()爲參數 >>> time.ctime() # 至關於time.asctime(time.localtime(secs)) 'Mon Feb 26 11:06:29 2018' >>> time.ctime(-231334422) # 參數能夠爲負 'Sun Sep 2 20:26:18 1962't time.strftime(format,a) # 把一個表明時間的元祖或struct time轉化爲格式化的時間字符串 >>> time.strftime('%Y-%m-%d') '2018-02-26' >>> time.strftime('%Y-%m-%d %H:%M:%S') '2018-02-26 11:19:47' >>> time.strftime('%Y-%m-%d %H:%M:%S',a) '2018-02-26 10:40:18' >>> time.strftime('%Y-%m-%d %H:%M:%S %A',a) '2018-02-26 10:40:18 Monday' >>> time.strftime('%Y-%m-%d %H:%M:%S %p') '2018-02-26 11:21:44 AM' >>> time.strftime('%Y-%m-%d %H:%M:%S %U') # 今年的第幾周 '2018-02-26 11:21:55 08' >>> time.strftime('%Y-%m-%d %H:%M:%S %w') # 0-6,星期日是0 '2018-02-26 11:24:56 1' time.strptime('string', format) # 把一個格式化時間字符串轉化爲struct_time,stftime的逆操做 >>> s = time.strftime('%Y %m-%d %H:%M:%S') >>> s '2018 02-26 11:42:16' >>> time.strptime(s,'%Y %m-%d %H:%M:%S') time.struct_time(tm_year=2018, tm_mon=2, tm_mday=26, tm_hour=11, tm_min=42, \ tm_sec=16, tm_wday=0, tm_yday=57, tm_isdst=-1)
datetime模塊 |
datetime模塊相比time模塊,datetime模塊的接口更直觀,更容易調用。
code
datetime模塊定義了下面幾個類:orm
一、datetime.date:表示日期的類,經常使用的屬性有year,month,day對象
二、datetime.time:表示時間的類,經常使用的屬性有hour,minute,second,microsecondblog
三、datetime.datetime:表示日期時間接口
四、datetime.timedelta:表示時間間隔,即兩個時間點之間的長度字符串
五、datetime.tzinfo:與時區相關信息
>>> a = datetime.datetime.now() datetime.datetime(2018, 2, 26, 12, 8, 18, 805166) >>> import time >>> d2 = datetime.date.fromtimestamp(time.time()) # 時間戳轉化爲年月日 datetime.date(2018, 2, 26) >>> d2.timetuple() # 轉化爲時間對象 time.struct_time(tm_year=2018, tm_mon=2, tm_mday=26, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=57, tm_isdst=-1) # 時間運算 >>> a = datetime.datetime.now() >>> t1 = datetime.timedelta(1) >>> a - t1 datetime.datetime(2018, 2, 25, 13, 37, 13, 812339) >>> a - datetime.timedelta(days=1) datetime.datetime(2018, 2, 25, 13, 37, 13, 812339) >>> a - datetime.timedelta(days=3) datetime.datetime(2018, 2, 23, 13, 37, 13, 812339) # 還支持hours、minutes、secends的運算 >>> a - datetime.timedelta(hours=3) datetime.datetime(2018, 2, 26, 10, 37, 13, 812339) >>> a + datetime.timedelta(hours=3) datetime.datetime(2018, 2, 26, 16, 37, 13, 812339) # 時間替換 >>> n = datetime.datetime.now() >>> n.replace(year=2016) datetime.datetime(2016, 2, 26, 13, 45, 26, 863002) >>> n.replace(year=2017,month=4) datetime.datetime(2017, 4, 26, 13, 45, 26, 863002) >>> n.replace(year=2017,month=4,day=13) datetime.datetime(2017, 4, 13, 13, 45, 26, 863002) # replace實現時間計算 >>> expire_year = time.localtime()[0] # 當前年份 >>> expire_date = datetime.datetime.now().replace(year=expire_year+10).strftime('%Y-%m-%d') >>> expire_date '2028-03-25'