1、時間函數python
1.計算兩個日期相差天數的計算 app
1 >>> import datetime 2 >>> d1 = datetime.datetime(2016, 2, 16) 3 >>> d2 = datetime.datetime(2016, 2, 23) 4 >>> (d2-d1).days 5 7 6 >>>
2.計算兩個時間相差的秒數函數
1 >>> import datetime 2 >>> starttime = datetime.datetime.now() 3 >>> endtime = datetime.datetime.now() 4 >>> (endtime - starttime).seconds 5 4 6 >>>
3.計算當前時間向後12小時的時間spa
1 >>> import datetime 2 >>> d1 = datetime.datetime.now() 3 >>> d2 = d1 + datetime.timedelta(hours=12) 4 >>> d2.ctime() 5 'Fri Feb 26 07:58:41 2016' 6 >>>
4.日期的操做必須使用time或datetime庫debug
1 >>> import time 2 >>> da="2016-1-2" 3 >>> time.strptime(da,"%Y-%m-%d") 4 time.struct_time(tm_year=2016, tm_mon=1, tm_mday=2, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=2, tm_isdst=-1) 5 >>>
這是將字符串格式的日期及時間轉成日期對象
轉義符對應意義以下
%a 本地簡化星期名稱
%A 本地完整星期名稱
%b 本地簡化的月份名稱
%B 本地完整的月份名稱
%c 本地相應的日期表示和時間表示
%d 月內中的一天(0-31)
%H 24小時制小時數(0-23)
%I 12小時制小時數(01-12)
%j 年內的一天(001-366)
%m 月份(01-12)
%M 分鐘數(00=59)
%p 本地A.M.或P.M.的等價符
%S 秒(00-59)
%U 一年中的星期數(00-53)星期天爲星期的開始
%w 星期(0-6),星期天爲星期的開始
%W 一年中的星期數(00-53)星期一爲星期的開始
%x 本地相應的日期表示
%X 本地相應的時間表示
%y 兩位數的年份表示(00-99)
%Y 四位數的年份表示(000-9999)
%Z 當前時區的名稱
%% %號自己日誌
5.時間戳與字符串間的轉換code
#將"2011-09-28 10:00:00"轉化爲時間戳orm
1 >>> import time 2 >>> a = "2016-02-22 00:00:00" 3 >>> b = "2016-01-22 00:00:00" 4 >>> aa = time.mktime(time.strptime(a,'%Y-%m-%d %H:%M:%S')) #1456070400.0 5 >>> print(aa) 6 1456070400.0 7 >>> bb = time.mktime(time.strptime(b,'%Y-%m-%d %H:%M:%S')) #1453392000.0 8 >>> print(bb) 9 1453392000.0 10 >>> print((aa- bb)/3600/24)#31.0 將時間轉換爲天數
11 >>> 31.0 12
#將時間戳轉化爲localtime對象
1 >>> import time 2 >>> x = time.localtime(1317091800.0)#localtime參數爲float類型,這裏1317091800.0爲float類型 3 >>> print(time.strftime('%Y-%m-%d %H:%M:%S',x)) #2011-09-27 10:50:00 4 2011-09-27 10:50:00 5 >>>
1 >>> import datetime 2 3 >>> datetime.date(datetime.date.today().year,datetime.date.today().month,1) 4 datetime.date(2016, 2, 1) #當月1號 5 6 >>> datetime.date.today().replace(day=1) #當月1號 7 datetime.date(2016, 2, 1) 8 >>> (datetime.date.today().replace(day=1) - datetime.timedelta(1)).replace(day=1) #上月1號 9 datetime.date(2016, 1, 1) 10 >>> 11 >>> i = datetime.datetime.now() 12 >>> print ("%s-%s-%s" % (i.year,(i.month+1),"10")) #下個月 13 2016-3-10 14 >>>
2、logging日誌blog
1 #!/uer/bin/env python 2 #-*- coding:utf-8 -*- 3 4 import logging 5 6 #建立日誌 7 logger = logging.getLogger('user_login-LOG') 8 logger.setLevel(logging.INFO) 9 10 11 # create console handler and set level to debug 12 # 建立控制檯處理程序 和設置 debug級別 13 ch = logging.StreamHandler() 14 ch.setLevel(logging.DEBUG) 15 16 # create file handler and set level to warning 17 # 建立文件處理程序並設置warning警告級別 18 fh = logging.FileHandler("access.log") 19 # fh.setLevel(logging.WARNING) #把WARNING級別以上的日誌寫到 日誌文件中 20 fh.setLevel(logging.INFO) ##把INFO 級別以上的日誌寫到 日誌文件中去 21 # fh.setLevel(logging.DEBUG) 22 23 # create formatter 24 # 建立格式化程序 25 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') 26 27 # add formatter to ch and fh 28 # 格式化ch 和 fh 29 # ch.setFormatter(formatter) 30 fh.setFormatter(formatter) 31 32 # add ch and fh to logger 33 # 添加ch 和 fh 的日誌記錄 34 # logger.addHandler(ch) #顯示在控制檯上 35 logger.addHandler(fh) 36 37 # 'application' code 38 # 日誌記錄內容 39 # logger.debug('一、debug message') #記錄debug級別的信息 40 logger.info('二、info message') ##記錄info級別的信息 41 # logger.warn('三、warn message') #記錄warn級別的信息 42 # logger.error('四、error message') #記錄error級別的信息 43 # logger.critical('五、critical message') #記錄critical級別的信息
3、 logging模塊的使用: (控制檯無日誌輸出)
1 import logging 2 import datetime 3 4 log_file = "%s%s%s"%('logs/ftp_',datetime.date.today(),'.log') 5 logging.basicConfig(filename=log_file, 6 format='%(asctime)s - %(name)s - %(levelname)s - %(module)s :%(message)s', 7 datefmt='%Y-%m-%d %H:%M:%S %p', 8 level=10) 9 10 def exit(self,user_data): 11 send_str=("%s"%"301|").encode() 12 self.request.send(send_str) 13 self.handle() 14 mes = "%s,%s"%(user_data,'logout') 15 logging.info(mes)
日誌輸出效果:
2016-03-19 12:01:38 PM - root - INFO - SocketServer :alex, login successful!
2016-03-19 12:01:41 PM - root - INFO - SocketServer :alex command ls
2016-03-19 12:02:17 PM - root - INFO - SocketServer :alex, login successful!
2016-03-19 12:03:41 PM - root - INFO - SocketServer :alex command ls