datetime与logging模块

阶段一:日期与时间

1、datetime 模块中 主要类:
类名 功能说明
date 日期对象,常用的属性有year, month, day
time 时间对象hour,minute,second,毫秒
datetime 日期时间对象,常用的属性有hour, minute, second, microsecond
timedelta 时间间隔,即两个时间点之间的长度

日期: datetime.date( year, month, day )

时间: datetime.time( hour, minute, second,microsecond )

日期时间: datetime.datetime( year, month,day,hour, minute, second, microsecond )

时间间隔 : datetime.timedelta( days=0, seconds=0,microseconds=0, milliseconds=0,minutes=0, hours=0, weeks=0 )

2、datetime.datetime( ) 类中的常用方法:

1、now ():返回当前日期时间的datetime对象:

2、utcnow(…):返回当前日期时间的UTCdatetime对象

3.strptime(…):解析成datetime对象。根据string,format 2个参数,返回一个对应的datetime对象

例子: datetime.datetime.strptime(‘2018-3-22 15:28:18','%Y-%m-%d %H:%M:%S')

4.Strftime():格式化时间

例子:strtime=now.strftime("%Y-%m-%d %H:%M:%S")

5.时间戳转日期时间:t1= datetime.datetime.fromtimestamp(ts)

6日期时间转时间戳:t2=t1.timestamp()

3、时间运算 : ( 返回timedelte() 对象)

timedelta类是用来计算二个datetime对象的差值的。

此类中包含如下属性:

1、days:天数

2、microseconds:微秒数

3、seconds:秒数(>=0 并且 <1天)

4、total_seconds : 总秒数

4、例子
import datetime

# 日期
# date = datetime.date(2018,6,19)
# print(date)
# print(type(date))

# 时间 : : :
# t = datetime.time(10,50,30,1000)
# print(t)
# print(type(t))

# 日期时间
# dt = datetime.datetime(2018,6,19,10,55,30) # 日期必须要有,时间可以没有
# print(dt)
# print(type(dt))

# 时间间隔
# dlt = datetime.timedelta(hours=4)
# print(dlt)
# print(type(dlt))
# print(dt + dlt)

# 当前时间 东八区
# now = datetime.datetime.now()
# print(now)

# 格林威治时间
# utc = datetime.datetime.utcnow()
# print(utc)

# 北京时间,东八区时间
# delt = datetime.timedelta(hours=8)
# bei_jing = utc + delt
# print(bei_jing)

# 解析时间
# strp = datetime.datetime.strptime('jun-14-18 11:45','%b-%d-%y %H:%M')
# print(strp)

# 格式化时间
# strf = now.strftime('%Y-%m-%d %H:%M:%S')
# print(strf)

# 时间戳转换成日期时间
# t = datetime.datetime.fromtimestamp(0)
# print(t)

# 日期时间转换成时间戳
# t1 = t.timestamp()
# print(t1)

# 获取datetime对象中数据
now = datetime.datetime.now()
# print(now)
# 小时 分钟 秒钟
# print(now.hour)
# print(now.month)
# print(now.day)
# 星期
# print(now.weekday()) # 范围0-6
# print(now.isoweekday()) # 范围1-7
# iso标准化日期 isocalendar(...) # year年份,week number 周数,weekday星期
# a = now.isocalendar()
# year = now.isocalendar()[0]
# weekNum = now.isocalendar()[1]
# weekdaY = now.isocalendar()[2]
# print(a)
# print(year)
# print(weekNum)
# print(weekdaY)

# 计算你出生了多久
def how_long(year,month,day,hour=0,minut=0,second=0):
return datetime.datetime.now() - datetime.datetime(year,month,day,hour,minut,second)

a = how_long(1997,9,3)
print(a)

阶段二:logging模块

1、logging用法

1.初始化 logger = logging.getLogger(“name")

2.设置级别 logger.setLevel(logging.DEBUG),Logging中有NOTSET < DEBUG < INFO <WARNING < ERROR < CRITICAL这几种级别,日志会记录设置级别以上的日志

3.定义Handler,常用的是StreamHandler和FileHandler,

StreamHandler:将日志在控制台输出

FileHandler: 将日志记录到文件里面

4.formatter,定义了log信息的 内容 和格式,

例如:'%(asctime)s %(message)s', '%Y-%m-%d %H:%M:%S'

2、logging 中几种级别

NOTSET < DEBUG < INFO < WARNING< ERROR < CRITICAL

级别 何时使用
DEBUG 详细信息,典型地调试问题时会感兴趣
INFO 证明事情按照预期工作
WARNING 表明发生了一些意外,或者不久的将来会发生问题(如‘磁盘满了’)软件还是在正常工作
ERROR 由于更严重的问题,软件已不能执行一些功能了
CRITICAL 严重错误,表明软件已不能继续运行了
3、Formatter 中已有格式

%(name)s Logger的名字

%(levelname)s 文本形式的日志级别

%(message)s 用户输出的消息

%(asctime)s 字符串形式的当前时间。默认格式是“2003-07-08 16:49:45,896”。逗号后面的是毫秒

%(levelno)s 数字形式的日志级别

%(pathname)s 调用日志输出函数的模块的完整路径名,可能没有

%(filename)s 调用日志输出函数的模块的文件名

%(module)s 调用日志输出函数的模块名

%(funcName)s 调用日志输出函数的函数名

%(lineno)d 调用日志输出函数的语句所在的代码行

%(created)f 当前时间,用UNIX标准的表示时间的浮点数表示

%(relativeCreated)d 输出日志信息时的,自Logger创建以来的毫秒数

%(thread)d 线程ID。可能没有

%(threadName)s 线程名。可能没有

%(process)d 进程ID。可能没有

4、logging编程范式
import logging


# 1.初始化,实例化的过程
logger = logging.getLogger('test_log')

# 2.设置级别
logger.setLevel(logging.DEBUG) # 设置最低级别,小于它的级别不会输出

# 3.定义handler
# 3.1 控制台输出
sh = logging.StreamHandler()
sh.setLevel(logging.ERROR) # error 情况下,就会在控制台输出

# 3.2 写入log文件
fh = logging.FileHandler('test_file')
fh.setLevel(logging.DEBUG) # debug 级别以上我就写入log文件里

# 4.定义日志格式,格式化
formatter = logging.Formatter(
'时间: &(asctime)s,'
'日志级别: %(levelname)s,'
'日志消息: %(message)s'
)
# 把定义好的格式化添加到我们刚才定义的handler当中去
sh.setFormatter(formatter)
fh.setFormatter(formatter)

# 将我们的handler添加到logger里面去
logger.addHandler(sh)
logger.addHandler(fh)


if __name__ == '__main__':
# logger.debug('测试')
# logger.info('正常运行')
# logger.warn('警告')
# logger.error('报错')
# logger.critical('非常严重的错误')


def func(a):
try:
num = 20/a
logger.info(num) # 如果不报错,就正常运行
except Exception as e:
logger.error(e)
# 如果报错,就把报错信息扔进来,然后返回这个级别

func(0)

最新文章

  1. jsonp原理
  2. spring mvc总结1
  3. 乱码电路(Garbled circuits)
  4. SVN服务器搭建和使用(三)(转载)
  5. hadoop拾遗(五)---- mapreduce 输出到多个文件 / 文件夹
  6. 用bash命令得到Windows一个目录下的所有文件并且把结果输入到一个文件
  7. monkey与monkeyrunner的使用
  8. jQuery格式化时间插件formatDate
  9. boost xpressive 例子
  10. AJAX(XMLHttpRequest)进行跨域请求方法详解(一)
  11. 使用Atom打造无懈可击的Markdown编辑器
  12. mysql中kill掉所有锁表的进程
  13. kendo ui grid选中行事件,获取combobox选择的值
  14. 各种HTML锚点跳转方式
  15. 使用ffmpeg进行视频截图
  16. 简述Oracle IOT(Index Organized Table)
  17. Android最新版支付宝支付集成
  18. 【代码审计】CLTPHP_v5.5.3后台任意文件删除漏洞分析
  19. linux prefix
  20. 20165230 《Java程序设计》实验一(Java开发环境的熟悉)实验报告

热门文章

  1. SpringMVC方法接收参数可以为空、默认值设置
  2. rel 属性&lt;small&gt;H5保留属性&lt;/small&gt;
  3. 通过一个实际例子理解Kubernetes里pod的自动scale - 水平自动伸缩
  4. Jupyter notebook远程访问linux服务器
  5. Python语言程序设计基础(6)—— 组合数据类型
  6. POJ 最小球覆盖 模拟退火
  7. where are you going ? 反序为:going you are where
  8. 正则匹配之replace方法
  9. VS Code 中 HTML 文档注释 js 语句异常
  10. Cesium.js隐藏logo等信息