def format_dt(cls, dt): """ Format a datetime in the way that D* nodes expect. """ return ensure_timezone(dt).astimezone(tzutc()).strftime( '%Y-%m-%d %H:%M:%S %Z' )
def since(dt, base=None, chunks=1): if not base: base = datetime.now() if isinstance(dt, str): dt = parse_datetime(dt) base = ensure_timezone(base) dt = ensure_timezone(dt) if dt == base: return "now" if dt < base: delta = relativedelta(base, dt) prefix = '' suffix = ' ago' else: delta = relativedelta(dt, base) prefix = 'in ' suffix = '' sections = ( ('years', None), ('months', None), ('weeks', lambda r: int(r.days / 7)), ('days', lambda r: r.days % 7), ('hours', None), ('minutes', None), ('seconds', None) ) result = [] for section, handler in sections: if handler: val = handler(delta) else: val = getattr(delta, section, None) if val: result.append(u'{0} {1}'.format( val, section if val != 1 else section[:-1] )) if chunks and len(result) >= chunks: break return prefix + ', '.join(result) + suffix
def since(dt, base=None, chunks=1): if not base: base = datetime.now() if isinstance(dt, str): dt = parse_datetime(dt) base = ensure_timezone(base) dt = ensure_timezone(dt) if dt == base: return "now" if dt < base: delta = relativedelta(base, dt) prefix = '' suffix = ' ago' else: delta = relativedelta(dt, base) prefix = 'in ' suffix = '' sections = (('years', None), ('months', None), ('weeks', lambda r: int(r.days / 7)), ('days', lambda r: r.days % 7), ('hours', None), ('minutes', None), ('seconds', None)) result = [] for section, handler in sections: if handler: val = handler(delta) else: val = getattr(delta, section, None) if val: result.append(u'{0} {1}'.format( val, section if val != 1 else section[:-1])) if chunks and len(result) >= chunks: break return prefix + ', '.join(result) + suffix
def format_dt(cls, dt): """ Format a datetime in the way that D* nodes expect. """ return ensure_timezone(dt).astimezone( tzutc()).strftime('%Y-%m-%d %H:%M:%S %Z')