1,概述
datetime是python处理日期和时间的标准库 ,它由以下几个模块组成:
类名 | 功能说明 |
---|---|
date | 日期对象 , year , month , day |
time | 时间对象 , hour , minutes , second , microsecond |
datetime | 时间日期对 |
timedelta | 时间间隔,两个时间点之间的长度 |
2,时间表示知识普及
时区
格林威治时间 , UTC ,国际标志时间
就是零时区的时间
时间戳(timestamp)
是指某个时间距离格林威治时间1970 ,1 ,1 ,00 : 00 : 00的总秒数
3,模块接口
类名 | 功能说明 |
---|---|
date | 日期对象,常用的属性有year, month, day |
time | 时间对象hour,minute,second,毫秒 |
datetime | 日期时间对象,常用的属性有hour, minute, second, microsecond |
timedelta | 时间间隔,即两个时间点之间的长度 |
主要使用: datetime.datetime( ) 、 datetime.timedelta( )
简单使用
from datetime import datetime
d = datetime.now() #获取当前时间
print(d, d.day, d.year····) #输出 天 年 等等
st = d.timestamp() #datetime对象转换成时间戳
st = datetime.fromtimestamp #时间戳对象转换成datetime
d.strftime('%Y-%m-%d %H-%M-%S') #datetime对象转换成字符串(格式化输出)
d = datetime.strptime(dt_str(字符串的变量名), '%Y*%m-%d'(此处必须和字符串的格式一致)) #字符串对象转换成datetime
new_d = datetime(year=2019, moth=5, day=6) #直接创建一个datetime对象
时间格式化
%Y Year with century as a decimal number.
%m Month as a decimal number [01,12].
%d Day of the month as a decimal number [01,31].
%H Hour (24-hour clock) as a decimal number [00,23].
%M Minute as a decimal number [00,59].
%S Second as a decimal number [00,61].
%z Time zone offset from UTC.
%a Locale's abbreviated weekday name.
%A Locale's full weekday name.
%b Locale's abbreviated month name.
%B Locale's full month name.
%c Locale's appropriate date and time representation.
%I Hour (12-hour clock) as a decimal number [01,12].
%p Locale's equivalent of either AM or PM.
时间运算
datetime, date
对象 之间可以进行减法运算,从而得到他们之间的时间间隔
import time
from datetime import datetime, timedelta
# 直接创建一个datetime对象
today = datetime.now()
tomorrow = today + timedelta(days=1)
yesterday = today - timedelta(days=1)
print(today)
print(tomorrow)
print(yesterday)
4,时区转换
import time
from datetime import datetime, timedelta, timezone
# 创建一个时区
tz = timezone(offset=timedelta(hours=8))
d = datetime.now(tz=tz)
new_tz = timezone(offset=timedelta(hours=5))
new_d = d.astimezone(tz=new_tz)
print(d)
print(new_d)
1,概述
logging是python的内置的日志模块 , 很多的第三方库,例如scrapy,django框架的日志记录都是使用logging模块。
等级
日志等级(level) | 描述 |
---|---|
DEBUG | 调试信息 |
INFO | 普通信息, |
WARNING | 警告信息, |
ERROR | 错误信息, |
CRITICAL | 严重错误 |
2,简单使用
import logging # 导入
logging.basicConfig(
level=logging.DEBUG, # 等级
format="%(asctime)s-%(levelname)s-%(message)s" # 设置输出格式
)
logging.debug('This is a debug log')
logging.info('This is a info log')
logging.warning('This is a warning log')
logging.error('This is a error log')
logging.critical('This is a critical log')
3,将日志写到文件
import logging # 导入
logging.basicConfig(
filename='example.log',
level=logging.DEBUG, # 等级
format="%(asctime)s-%(levelname)s-%(message)s" # 设置输出格式
)
logging.debug('This is a debug log')
logging.info('This is a info log')
logging.warning('This is a warning log')
logging.error('This is a error log')
logging.critical('This is a critical log')
4,高级用法
组件 | 说明 |
---|---|
Loggers(日志记录器) | 提供程序直接使用的接口 |
Handler(日志处理组件) | 将记录的日志发送到指定的位置 |
Filters(日志过滤器) | y用于过滤特定的日志 |
Formatters(日志格式器) | y用于控制日志信息的输出格式 |
步骤:
import json
import logging # 导入
#1. 创建一个loggers对象
logger = logging.getLogger('%s_log' % __name__)
#2. 设置日志级别
logger.setLevel(logging.INFO)
#3. 创建formatters对象
formatter = logging.Formatter('%(asctime)s - %(filename)s [line:%(lineno)d - %(levelname)s: %(message)s]')
#4. 定义handler对象,决定吧日志发送到哪里
fh = logging.FileHandler('log.log')
fh.setLevel(logging.WARNING)
# 再创建一个handler输出日志到控制台
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
#5.设置handler的日志格式
fh.setFormatter(formatter)
ch.setFormatter(formatter)
#6.将handler 添加到logger中
logger.addHandler(fh)
logger.addHandler(ch)
data = '1.1'
logger.info('转换数据 %s 为整数' % data)
try:
int(data)
except Exception as e:
logger.error(e)