~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/osutils.py

  • Committer: Ian Clatworthy
  • Date: 2009-05-25 05:31:58 UTC
  • mto: (4837.1.1 faster-log)
  • mto: This revision was merged to the branch mainline in revision 4844.
  • Revision ID: ian.clatworthy@canonical.com-20090525053158-kcen1zc9ovih8q4j
make log --long faster

Show diffs side-by-side

added added

removed removed

Lines of Context:
686
686
    return offset.days * 86400 + offset.seconds
687
687
 
688
688
weekdays = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
 
689
_default_format_by_weekday_num = [wd + " %Y-%m-%d %H:%M:%S" for wd in weekdays]
 
690
 
689
691
 
690
692
def format_date(t, offset=0, timezone='original', date_fmt=None,
691
693
                show_offset=True):
705
707
    date_str = time.strftime(date_fmt, tt)
706
708
    return date_str + offset_str
707
709
 
 
710
 
 
711
# Cache of formatted offset strings
 
712
_offset_cache = {}
 
713
 
 
714
 
 
715
def format_date_with_offset_in_original_timezone(t, offset,
 
716
    _cache=_offset_cache):
 
717
    """Return a formatted date string in the original timezone.
 
718
 
 
719
    This routine may be faster then format_date.
 
720
 
 
721
    :param t: Seconds since the epoch.
 
722
    :param offset: Timezone offset in seconds east of utc.
 
723
    """
 
724
    if offset is None:
 
725
        offset = 0
 
726
    tt = time.gmtime(t + offset)
 
727
    date_fmt = _default_format_by_weekday_num[tt[6]]
 
728
    date_str = time.strftime(date_fmt, tt)
 
729
    offset_str = _cache.get(offset, None)
 
730
    if offset_str is None:
 
731
        offset_str = ' %+03d%02d' % (offset / 3600, (offset / 60) % 60)
 
732
        _cache[offset] = offset_str
 
733
    return date_str + offset_str
 
734
 
 
735
 
708
736
def format_local_date(t, offset=0, timezone='original', date_fmt=None,
709
737
                      show_offset=True):
710
738
    """Return an unicode date string formatted according to the current locale.
724
752
        date_str = date_str.decode(bzrlib.user_encoding, 'replace')
725
753
    return date_str + offset_str
726
754
 
 
755
 
727
756
def _format_date(t, offset, timezone, date_fmt, show_offset):
728
757
    if timezone == 'utc':
729
758
        tt = time.gmtime(t)