~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/osutils.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2008-10-01 01:32:15 UTC
  • mfrom: (3526.5.4 localweekday)
  • Revision ID: pqm@pqm.ubuntu.com-20081001013215-ouj6gl6fwotdoj7n
(Martin von Gagern) Add localization support for
        osutils.format_local_date

Show diffs side-by-side

added added

removed removed

Lines of Context:
652
652
    :param timezone: How to display the time: 'utc', 'original' for the
653
653
         timezone specified by offset, or 'local' for the process's current
654
654
         timezone.
655
 
    :param show_offset: Whether to append the timezone.
656
 
    :param date_fmt: strftime format.
657
 
    """
 
655
    :param date_fmt: strftime format.
 
656
    :param show_offset: Whether to append the timezone.
 
657
    """
 
658
    (date_fmt, tt, offset_str) = \
 
659
               _format_date(t, offset, timezone, date_fmt, show_offset)
 
660
    date_fmt = date_fmt.replace('%a', weekdays[tt[6]])
 
661
    date_str = time.strftime(date_fmt, tt)
 
662
    return date_str + offset_str
 
663
 
 
664
def format_local_date(t, offset=0, timezone='original', date_fmt=None,
 
665
                      show_offset=True):
 
666
    """Return an unicode date string formatted according to the current locale.
 
667
 
 
668
    :param t: Seconds since the epoch.
 
669
    :param offset: Timezone offset in seconds east of utc.
 
670
    :param timezone: How to display the time: 'utc', 'original' for the
 
671
         timezone specified by offset, or 'local' for the process's current
 
672
         timezone.
 
673
    :param date_fmt: strftime format.
 
674
    :param show_offset: Whether to append the timezone.
 
675
    """
 
676
    (date_fmt, tt, offset_str) = \
 
677
               _format_date(t, offset, timezone, date_fmt, show_offset)
 
678
    date_str = time.strftime(date_fmt, tt)
 
679
    if not isinstance(date_str, unicode):
 
680
        date_str = date_str.decode(bzrlib.user_encoding, 'replace')
 
681
    return date_str + offset_str
 
682
 
 
683
def _format_date(t, offset, timezone, date_fmt, show_offset):
658
684
    if timezone == 'utc':
659
685
        tt = time.gmtime(t)
660
686
        offset = 0
673
699
        offset_str = ' %+03d%02d' % (offset / 3600, (offset / 60) % 60)
674
700
    else:
675
701
        offset_str = ''
676
 
    # day of week depends on locale, so we do this ourself
677
 
    date_fmt = date_fmt.replace('%a', weekdays[tt[6]])
678
 
    return (time.strftime(date_fmt, tt) +  offset_str)
 
702
    return (date_fmt, tt, offset_str)
679
703
 
680
704
 
681
705
def compact_date(when):