예제 #1
0
    def format(self, value):
        if not isinstance(value, datetime):
            return value

        configlet = getUtility(IFormatterConfiglet)

        tz = timezone(configlet.timezone)

        if value.tzinfo is None:
            value = utc.localize(value)

        value = value.astimezone(tz)

        offset = value.tzinfo.utcoffset(value)
        if offset < timedelta():
            ind = -1
        else:
            ind = 1
        offset = ind*(abs(offset).seconds/600)*10

        value = FixedOffset(offset).normalize(value)

        fdate = unicode(value.strftime(str(getattr(configlet,'date_'+self.tp))))
        ftime = unicode(value.strftime(str(getattr(configlet,'time_'+self.tp))))

        formatted = value.strftime('%B %d, %Y %H:%M:%S %z')

        return u'<span class="zojax-formatter-fancydatetime" date="%s" time="%s" offset="%s" value="%s" format="%s">%s</span>' \
            % (fdate, ftime, offset, value.strftime('%B %d, %Y %H:%M:%S %z'), self.tp, formatted)
예제 #2
0
    def format(self, value):
        configlet = getUtility(IFormatterConfiglet)

        tz = timezone(configlet.timezone)

        if value.tzinfo is None:
            value = utc.localize(value)

        value = value.astimezone(tz)

        now = datetime.now(utc)
        delta = now - value.astimezone(utc)
        key = 'past'
        if delta < timedelta():
            delta = - delta + timedelta(seconds=1) #due to python implementation
            key = 'future'

        offset = value.tzinfo.utcoffset(value)
        if offset < timedelta():
            ind = -1
        else:
            ind = 1
        offset = ind*(abs(offset).seconds/600)*10

        value = FixedOffset(offset).normalize(value)

        years, months, weeks, hours, minutes = (
            delta.days/365, delta.days/30, delta.days/7,
            delta.seconds/3600, delta.seconds/60)
        formatted = None

        if years > 0:
            formatted = translate(self.messages[key]['year'], 'zojax.formatter',
                                  mapping={'value': years})
        elif months > 0:
            formatted = translate(self.messages[key]['month'],'zojax.formatter',
                                  mapping={'value': months})
        elif weeks > 0:
            formatted = translate(self.messages[key]['week'], 'zojax.formatter',
                                  mapping={'value': weeks})
        elif delta.days > 0:
            formatted = translate(self.messages[key]['day'], 'zojax.formatter',
                                  mapping={'value': delta.days})
        elif hours > 0:
            formatted = translate(self.messages[key]['hour'], 'zojax.formatter',
                                  mapping={'value': hours})
        elif minutes > 0:
            formatted = translate(
                self.messages[key]['minute'], 'zojax.formatter',
                mapping={'value': minutes})
        else:
            formatted = translate(
                self.messages[key]['second'], 'zojax.formatter',
                mapping={'value': delta.seconds})

        return """<span class="zojax-formatter-humandatetime" value="%s">%s</span>""" \
                % (value.strftime('%B %d, %Y %H:%M:%S %z'), formatted)