mirror of https://github.com/MISP/PyMISP
71 lines
1.8 KiB
Python
71 lines
1.8 KiB
Python
|
#!/usr/bin/env python
|
||
|
# -*- coding: utf-8 -*-
|
||
|
|
||
|
from datetime import datetime
|
||
|
from datetime import timedelta
|
||
|
from dateutil.parser import parse
|
||
|
|
||
|
|
||
|
class DateError(Exception):
|
||
|
def __init__(self, value):
|
||
|
self.value = value
|
||
|
|
||
|
def __str__(self):
|
||
|
return repr(self.value)
|
||
|
|
||
|
|
||
|
# ############### Date Tools ################
|
||
|
|
||
|
def dateInRange(datetimeTested, begin=None, end=None):
|
||
|
if begin is None:
|
||
|
begin = datetime(1970, 1, 1)
|
||
|
if end is None:
|
||
|
end = datetime.now()
|
||
|
return begin <= datetimeTested <= end
|
||
|
|
||
|
|
||
|
def toDatetime(date):
|
||
|
return parse(date)
|
||
|
|
||
|
|
||
|
def datetimeToString(datetime, formatstring):
|
||
|
return datetime.strftime(formatstring)
|
||
|
|
||
|
|
||
|
def checkDateConsistancy(begindate, enddate, lastdate):
|
||
|
if begindate is not None and enddate is not None:
|
||
|
if begindate > enddate:
|
||
|
raise DateError('begindate ({}) cannot be after enddate ({})'.format(begindate, enddate))
|
||
|
|
||
|
if enddate is not None:
|
||
|
if toDatetime(enddate) < lastdate:
|
||
|
raise DateError('enddate ({}) cannot be before lastdate ({})'.format(enddate, lastdate))
|
||
|
|
||
|
if begindate is not None:
|
||
|
if toDatetime(begindate) > datetime.now():
|
||
|
raise DateError('begindate ({}) cannot be after today ({})'.format(begindate, datetime.now().date()))
|
||
|
|
||
|
|
||
|
def setBegindate(begindate, lastdate):
|
||
|
return max(begindate, lastdate)
|
||
|
|
||
|
|
||
|
def setEnddate(enddate):
|
||
|
return min(enddate, datetime.now())
|
||
|
|
||
|
|
||
|
def getLastdate(last):
|
||
|
return (datetime.now() - timedelta(days=int(last))).replace(hour=0, minute=0, second=0, microsecond=0)
|
||
|
|
||
|
|
||
|
def getNDaysBefore(date, days):
|
||
|
return (date - timedelta(days=days)).replace(hour=0, minute=0, second=0, microsecond=0)
|
||
|
|
||
|
|
||
|
def getToday():
|
||
|
return (datetime.now()).replace(hour=0, minute=0, second=0, microsecond=0)
|
||
|
|
||
|
|
||
|
def days_between(date_1, date_2):
|
||
|
return abs((date_2 - date_1).days)
|