第 5 天 python的時間函數、logging日誌

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

相關文章
相關標籤/搜索