예제 #1
0
 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'
     )
예제 #2
0
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
예제 #3
0
파일: templates.py 프로젝트: meZee/pyaspora
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
예제 #4
0
 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')