1
2
3
4
5
6
7
8
>>>import datetime
>>>d1=datetime.datetime(2015,7,5)
>>>d2=datetime.datetime(2005,7,4)
>>>(d1-d2).seconds
//结果86400s
# 计算两个时间的间隔天数
# 注意:输入月份和天时,不能输入08,09等,会被识别为 8 进制而出错!(8进制是不超过07的)
# 解决办法:要把月份和天前面的0去掉。
# time模块实现, 也是自带的# 字符串不好计算~但是时间戳是固定的呀...
# 计算结果中, 假定今天24日, 输入24, 输出0天, 输入25, 输出-1天
import time
def f(tm):
stamp = time.mktime(time.strptime(tm, "%Y%m%d"))
diff = int((time.time() - stamp) // 86400)
if diff <= 180:
return {tm: str(diff)}
else:
d = {}
while diff > 180:
d[tm] = 180
stamp += 180 * 86400
diff = int((time.time() - stamp) // 86400)
# 注意这里time.gmtime()返回的是0时区日期, 需要处理时区问题
tm = time.strftime("%Y%m%d", time.gmtime(stamp - time.timezone))
else:
d[tm] = str(diff)
return d
if __name__ == '__main__':
tm = '20160325'
print(f(tm))
tm = '20171015'
print(f(tm))
# 结果输出, 注意: 字典是没有固定顺序的
'''
{'20160921': 180, '20170320': 180, '20170916': '38', '20160325': 180}
{'20171015': '9'}
'''
djaogo 时间判断表达
时间
1、gt:大于某个时间
now = datetime.datetime.now()
前一天
start = now – datetime.timedelta(hours=23, minutes=59, seconds=59)
a=yourobject.objects .filter(youdatetimcolumn__gt=start)
2、gte:大于等于某个时间:
a=yourobject.objects .filter(youdatetimcolumn__gte=start)
3、lt:小于
a=yourobject.objects .filter(youdatetimcolumn__lt=start)
4、lte:小于等于
a=yourobject.objects .filter(youdatetimcolumn__lte=start)
5、range:查询时间段
start_date = datetime.date(2005, 1, 1)
end_date = datetime.date(2005, 3, 31)
Entry.objects.filter(pub_date__range=(start_date, end_date))
6、year:查询某年
Entry.objects.filter(pub_date__year=2005)
7、month:查询某月
Entry.objects.filter(pub_date__month=12)
8、day:某天
Entry.objects.filter(pub_date__day=3)
9、week_day:星期几
Entry.objects.filter(pub_date__week_day=2)
10、获取今天的日期,日期格式为yyyy-MM-dd
from django.utils.timezone import now, timedelta
date = now().date() + timedelta(days=-1) #昨天
date = now().date() + timedelta(days=0) #今天
date = now().date() + timedelta(days=1) #明天