导读:今天首席CTO笔记来给各位分享关于Django怎么用时间减时间的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
django 日志文件如何按时间日期切割,原生不支持吗
django 日志文件如何按时间日期切割
linux下处理tomcat日志切割与删除操作:
System.out和System.err都被打印到catalina.out。catalina.out不会rotate。一般在部署tomcat后,运行久了,catalina.out文件会越来越大,对系统的稳定造成了一定的影响。
1、可通过修改conf/logging.properties日志配置文件来屏蔽掉这部分的日志信息。
将level级别设置成WARNING就可以大量减少日志的输出,当然也可以设置成OFF,直接禁用掉。
一般日志的级别有:
2、使用cronolog工具切分Tomcat的catalina.out日志文件,下载、安装cronolog。
用which cronolog可以查到安装的路径,这个路径待会在修改catalina.sh时会用到。
修改catalina.sh 将183行修改成184行内容,注释掉355行,368、369行替换成370、371行,379、380行替换成381、382行。
这样在/usr/local/tomcat/logs每天会自动生成catalina.%Y-%m-%d.out文件,下面要做的是定期清理这些过期的文件,可以通过crontab来实现。
Django中怎么使用日期函数
SELECT MAX(id) FROM django;
Django是用Python写的,你直接用Python的日期函数就好了SELECT MAX(id) FROM django;
Django是用Python写的,你直接用Python的日期函数就好了
python中timedelta方法怎么用
#! /usr/bin/python# coding=utf-8from datetime import datetime,timedelta"""timedelta代表两个datetime之间的时间差"""now = datetime.now()
past = past = datetime(2010,11,12,13,14,15,16)
timespan = now - past#这会得到一个负数
past - now
attrs = [
("days","日"),( 'seconds',"秒"),( 'microseconds',"毫秒")#('min',"最小"),( 'max',"最大"),]for k,v in attrs: "timespan.%s = %s #%s" % (k,getattr(timespan, k),v)"""总共相差的秒数"""timespan.total_seconds()"""实例化一个timespan
请注意它的参数顺序
timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])"""timespan = timedelta(days=1)
now - timespan #返回的是datetime型
now + timespan
timespan * 2 #还可以乘哦。代表二倍
timespan / 13#增加一个月from calendar import monthrange
now + timedelta(days=monthrange(start.year,start.month)[1])
实例1:
'''时间d距离now()的长度,比如:1分钟前,1小时前,1月前,1年前'''
Python代码
# -*- encoding=UTF-8 -*-
import datetime
def timebefore(d):
chunks = (
(60 * 60 * 24 * 365, u'年'),
(60 * 60 * 24 * 30, u'月'),
(60 * 60 * 24 * 7, u'周'),
(60 * 60 * 24, u'天'),
(60 * 60, u'小时'),
(60, u'分钟'),
)
#如果不是datetime类型转换后与datetime比较
if not isinstance(d, datetime.datetime):
d = datetime.datetime(d.year,d.month,d.day)
now = datetime.datetime.now()
delta = now - d
#忽略毫秒
before = delta.days * 24 * 60 * 60 + delta.seconds #python2.7直接调用 delta.total_seconds()
#刚刚过去的1分钟
if before = 60:
return u'刚刚'
for seconds,unit in chunks:
count = before // seconds
if count != 0:
break
return unicode(count)+unit+u"前"
实例2:
‘’‘当前的时间上加一天或一年减一天等操作’‘’
Python代码1
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from datetime import datetime,timedelta
now = datetime.now()
yestoday = now - timedelta(days=1)
tommorow = now + timedelta(days=1)
next_year = now + timedelta(days = 365)
Python代码2
#使用replace()代替日期加减
from datetime import datetime
now1 = datetime.now()
now1 # datetime.datetime(2017, 2, 10, 22, 29, 48, 288500)
# 增加一天或减少一天
now2 = now1.replace(day=9)
now2 # datetime.datetime(2017, 2, 9, 22, 29, 48, 288500)
# timestrap() 函数是把日期转化为时间戳,时间戳就是秒数
time_span = now1.timestrap() - now2.timestrap()/(24*3600)
time_span # 1
日期常用问题
1: Datetime中offset-naive与offset-aware时间的计算
在使用Django时,默认是开启对多时区的支持的,在获取时间的时候会是如下形式:
datetime.datetime(2014, 4, 18, 15, 37, 7, tzinfo=UTC)
我们可以利用django.utils.timezone中提供的localtime方法来将该时间转换为本地时间:
1234 dtdatetime.datetime(2014, 4, 18, 15, 37, 7, tzinfo=UTC) localtime(dt)datetime.datetime(2014, 4, 18, 23, 37, 7, tzinfo=LocalTimezone)
有时候,我们需要将该时间与当前时间做比较,例如计算差值,你可能会想到直接这么做:
123 import datetime now = datetime.datetime.now() now - dt
不过这是不对的,并告知如下错误:
123 Traceback (most recent call last): File "console", line 1, in moduleTypeError: can't subtract offset-naive and offset-aware datetimes
问题就出在利用datetime.datetime.now()得到的当前时间是offset-naive的,而另外一个却是offset-aware的,因此我们需要将这里的dt转成与now一样的形式,可以这么做:
12345 dt = dt.replace(tzinfo=None) dtdatetime.datetime(2014, 4, 18, 15, 37, 7) now - dtdatetime.timedelta(0, 34108, 443000)
备注:1:timezone 获取的日期增加和修改(比如加一天减一天)
from django.utiles import timezone
from datetime
t1 = timezone.now()
# torrow
t1+datetime.timedelta(days=1,hours=1)
2:python得到两个时间段的每一天的列表
date_list = []
begin_date = datetime.datetime.strptime(begin_date, "%Y-%m-%d")
end_date = datetime.datetime.strptime(end_date, "%Y-%m-%d") while begin_date = end_date:
date_str = begin_date.strftime("%m-%d")
date_list.append(date_str)
begin_date += datetime.timedelta(days=1) print date_list
# 方法2(安装boto3 库 pip install boto3):
from datetime import datetime
from dateutil.rrule import rrule, DAILY
a = datetime(2009, 5, 30)
b = datetime(2009, 6, 9)
for dt in rrule(DAILY, dtstart=a, until=b):
print dt.strftime("%Y-%m-%d")
# 在原来日期上增加一年
from dateutil.relativedelta import relativedelta
from django.utils import timezone
t1 = timezone.now()
neww_year = t1 + relativedelta(years=1)
结语:以上就是首席CTO笔记为大家整理的关于Django怎么用时间减时间的全部内容了,感谢您花时间阅读本站内容,希望对您有所帮助,更多关于Django怎么用时间减时间的相关内容别忘了在本站进行查找喔。