Source code for harpseal.utils.datetime

"""
    DateTime Tools
    ~~~~~~~~~~~~~~

"""
import time
from datetime import datetime, timedelta

EPOCH = datetime.utcfromtimestamp(0)

[docs]def unixtime(dt, multiply=True): """Return the unix timestamp of the datetime given. :param bool multiply: whether return as 13-digit timestamp or 10-digit timestamp """ if not isinstance(dt, datetime): raise TypeError("The first argument is must be datetime.") delta = dt - EPOCH result = delta.total_seconds() if multiply: result = int(result * 1000.0) return result
[docs]def ago(**kwargs): """Return the datetime that points specific times ago.""" dt = datetime.now() - timedelta(**kwargs) return dt
[docs]def parse(text, fmt=r'%Y-%m-%d'): """Return the datetime of either text or integer given. This function automatically recognizes the format of text or integer. """ num = None dt = None try: num = int(text) except: pass else: if len(text) == 13: num /= 1000 dt = datetime.utcfromtimestamp(num) if not dt: if fmt == r'%Y-%m-%d' and ' ' in text: count = text.count(':') + 1 adds = ':'.join([r'%H', r'%M', r'%S'][:count]) fmt = '{} {}'.format(fmt, adds) dt = datetime.strptime(text, fmt) return dt