def format_date(date, gmt_offset=0, relative=True, shorter=False, full_format=False):
    """Formats the given date (which should be GMT).

    By default, we return a relative time (e.g., "2 minutes ago"). You
    can return an absolute date string with ``relative=False``.

    You can force a full format date ("July 10, 1980") with
    ``full_format=True``.

    This method is primarily intended for dates in the past.
    For dates in the future, we fall back to full format.

    From tornado
    """

    if not date:
        return '-'
    if isinstance(date, float) or isinstance(date, int):
        date = datetime.datetime.utcfromtimestamp(date)
    now = datetime.datetime.utcnow()
    if date > now:
        if relative and (date - now).seconds < 60:
            # Due to click skew, things are some things slightly
            # in the future. Round timestamps in the immediate
            # future down to now in relative mode.
            date = now
        else:
            # Otherwise, future dates always use the full format.
            full_format = True
    local_date = date - datetime.timedelta(minutes=gmt_offset)
    local_now = now - datetime.timedelta(minutes=gmt_offset)
    local_yesterday = local_now - datetime.timedelta(hours=24)
    difference = now - date
    seconds = difference.seconds
    days = difference.days

    format = None
    if not full_format:
        ret_, fff_format = fix_full_format(days, seconds, relative, shorter, local_date, local_yesterday)
        format = fff_format
        if ret_:
            return format
        else:
            format = format

    if format is None:
        format = "%(month_name)s %(day)s, %(year)s" if shorter else \
            "%(month_name)s %(day)s, %(year)s at %(time)s"

    str_time = "%d:%02d" % (local_date.hour, local_date.minute)

    return format % {
        "month_name": local_date.strftime('%b'),
        "weekday": local_date.strftime('%A'),
        "day": str(local_date.day),
        "year": str(local_date.year),
        "month": local_date.month,
        "time": str_time
    }
def format_date ( date , gmt_offset = 0 , relative = True , shorter = False , full_format = False ) : if not date : return '-' if isinstance ( date , float ) or isinstance ( date , int ) : date = datetime . datetime . utcfromtimestamp ( date ) now = datetime . datetime . utcnow ( ) if date > now : if relative and ( date - now ) . seconds < 60 : date = now else : full_format = True local_date = date - datetime . timedelta ( minutes = gmt_offset ) local_now = now - datetime . timedelta ( minutes = gmt_offset ) local_yesterday = local_now - datetime . timedelta ( hours = 24 ) difference = now - date seconds = difference . seconds days = difference . days format = None if not full_format : ret_ , fff_format = fix_full_format ( days , seconds , relative , shorter , local_date , local_yesterday ) format = fff_format if ret_ : return format else : format = format if format is None : format = "%(month_name)s %(day)s, %(year)s" if shorter else "%(month_name)s %(day)s, %(year)s at %(time)s" str_time = "%d:%02d" % ( local_date . hour , local_date . minute ) return format % { "month_name" : local_date . strftime ( '%b' ) , "weekday" : local_date . strftime ( '%A' ) , "day" : str ( local_date . day ) , "year" : str ( local_date . year ) , "month" : local_date . month , "time" : str_time }
Formats the given date (which should be GMT).

    By default, we return a relative time (e.g., "2 minutes ago"). You
    can return an absolute date string with ``relative=False``.

    You can force a full format date ("July 10, 1980") with
    ``full_format=True``.

    This method is primarily intended for dates in the past.
    For dates in the future, we fall back to full format.

    From tornado