zoukankan      html  css  js  c++  java
  • 第 5 天 python的时间函数、logging日志

    一、时间函数

    1.计算两个日期相差天数的计算 

    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小时的时间

    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库

    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.时间戳与字符串间的转换

    #将"2011-09-28 10:00:00"转化为时间戳

     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 >>> 

     二、logging日志

     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('1、debug message') #记录debug级别的信息
    40 logger.info('2、info message') ##记录info级别的信息
    41 # logger.warn('3、warn message') #记录warn级别的信息
    42 # logger.error('4、error message') #记录error级别的信息
    43 # logger.critical('5、critical message') #记录critical级别的信息

    三、 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

  • 相关阅读:
    LINQ大全。
    李开复回复:为什么很多人进不了Google
    判断输入的是否是数字?
    SQL Server 2005安装详解
    学习asp.net比较完整的流程
    .NET常用网站
    软件设计经典书籍推荐
    Linux 下zip包的压缩与解压
    centos的用户、组权限、添加删除用户等操作的详细操作命令
    CentOS5.5 默认基本服务详解
  • 原文地址:https://www.cnblogs.com/zhang252709/p/5218891.html
Copyright © 2011-2022 走看看