datetime 和logging

2019年5月1日17:57:04 发表评论 2,223 views
datetime模块
date    日期对象,常用的属性有year,month,day
time    时间对象hour,minute,second,毫秒
datetime    日期时间对象,常用的属性有hour,minute,second,microsecond
timedelta    时间间隔,即两个时间点之间的长度
主要使用datetime.datetime() 和datetime.timedelta()
常用方法:
获取当前日期时间:datetime.now()
日期时间转换为时间戳: 时间日期对象.timestamp()
示例: datetime.now().timestamp()
时间戳转化为时间: datetime.fromtimestamp(时间戳)
示例: datetime.fromtimestamp( 1534231316.796308)
日期时间对象转字符串: 日期时间对象.strftime(format)
datetime.now().strftime('%Y-%m-%d')
字符串转日期时间对象: datetime.datetime.strptime(data_str.format)
示例: datetime.datetime.strptime('2018-03-22 15:28:18','%Y-%m-%d %H:%M:%S')
作业:
必做题1.写一个程序能接收用户输入出生日期从而计算出用户活了多少天
2.使用logging模块化组件实现能记录错误信息到文件的程序,并在程序里制造错误,看错误信息是否被记录下来
import datetime
a = datetime.datetime.now()#获取当前时间
print(a)
my_date = datetime.date(2019,4,29)#创建一个日期对象
print(my_date)
print(type(my_date))
my_time = datetime.time(20,43,50)
print(my_time)
my_datetime= datetime.datetime(2019,4,29,20,45,22) #创建一个日期时间对象
print(my_datetime)
print(type(my_datetime))
print(datetime.date.min) #获取最大最小日期
print(datetime.date.max)
a1 = datetime.timedelta(hours=5,minutes=30,seconds=33)
print(datetime.datetime.now()-a1) #获取前面五个小时的时间
a2 = datetime.timedelta(weeks= 1,hours = 10)
print(datetime.datetime.now()-a2) #获取一周前10小时的时间,可用Ctrl再点击timedelta来查看内置参数
now = datetime.datetime.now()
my_stamp=datetime.datetime.timestamp(now)#将时间格式转换成时间戳
print(my_stamp)
newtime=datetime.datetime.fromtimestamp(my_stamp)#将时间戳对象转换成日期
print(newtime)
print(newtime.strftime('%Y--%m-%d')) #将日期对象转换成字符串
print(datetime.datetime.strptime(newtime.strftime('%Y--%m-%d'),'%Y--%m-%d'))
print(type(datetime.datetime.strptime(newtime.strftime('%Y--%m-%d'),'%Y--%m-%d')))
#将字符串转换成成时间日期对象导出,输入是时间日期对象,如果只想要日期对象呢?
import logging#导入日志模块
# 初始化
logger = logging.getLogger() #实例化对象
# 设置级别
logger.setLevel(logging.DEBUG) #设置日志管理器的最低级别,低于这个级别的将不记录
# 定义handler
sh = logging.StreamHandler()#在控制台输出
sh.setLevel(logging.DEBUG)#达到这个级别就输出
fh = logging.FileHandler('test.log',encoding='utf-8')#写入到文件中去
fh.setLevel(logging.DEBUG)#达到这个级别就输出
# 格式化输出
formatter = logging.Formatter('时间:%(asctime)s,'
'日志级别:%(levelname)s,'
'日志内容:%(message)s'
)
sh.setFormatter(formatter)#设置在控制台输出的格式
fh.setFormatter(formatter)#设置写入文件输出的格式
logger.addHandler(sh)#让上面的handler生效
logger.addHandler(fh)#让上面的handler生效
if __name__ == '__main__':
logger.debug('调试中')
logger.info('正在运行')
logger.warning('警告')
logger.error('错误')
logger.critical('崩溃')
def func(n):
try:
num = 20/n
logger.info(num)
except Exception as e:
logger.error(e)
func(0)

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: