~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/osutils.py

  • Committer: Florent Gallaire
  • Date: 2017-03-17 10:39:02 UTC
  • mto: This revision was merged to the branch mainline in revision 6622.
  • Revision ID: fgallaire@gmail.com-20170317103902-xsmafws9vn8rczx9
Fix for Windows and 32-bit platforms buggy gmtime().

Show diffs side-by-side

added added

removed removed

Lines of Context:
27
27
from bzrlib.lazy_import import lazy_import
28
28
lazy_import(globals(), """
29
29
from datetime import datetime
 
30
from datetime import timedelta
30
31
import getpass
31
32
import locale
32
33
import ntpath
827
828
            return True
828
829
 
829
830
 
 
831
def gmtime(seconds=None):
 
832
    """Convert seconds since the Epoch to a time tuple expressing UTC (a.k.a.
 
833
    GMT). When 'seconds' is not passed in, convert the current time instead.
 
834
    Handy replacement for time.gmtime() buggy on Windows and 32-bit platforms.
 
835
    """
 
836
    if seconds is None:
 
837
        seconds = time.time()
 
838
    return (datetime(1970, 1, 1) + timedelta(seconds=seconds)).timetuple()
 
839
 
 
840
 
830
841
def local_time_offset(t=None):
831
842
    """Return offset of local zone from GMT, either at present or at time t."""
832
843
    if t is None:
872
883
    """
873
884
    if offset is None:
874
885
        offset = 0
875
 
    tt = time.gmtime(t + offset)
 
886
    tt = gmtime(t + offset)
876
887
    date_fmt = _default_format_by_weekday_num[tt[6]]
877
888
    date_str = time.strftime(date_fmt, tt)
878
889
    offset_str = _cache.get(offset, None)
904
915
 
905
916
def _format_date(t, offset, timezone, date_fmt, show_offset):
906
917
    if timezone == 'utc':
907
 
        tt = time.gmtime(t)
 
918
        tt = gmtime(t)
908
919
        offset = 0
909
920
    elif timezone == 'original':
910
921
        if offset is None:
911
922
            offset = 0
912
 
        tt = time.gmtime(t + offset)
 
923
        tt = gmtime(t + offset)
913
924
    elif timezone == 'local':
914
925
        tt = time.localtime(t)
915
926
        offset = local_time_offset(t)
925
936
 
926
937
 
927
938
def compact_date(when):
928
 
    return time.strftime('%Y%m%d%H%M%S', time.gmtime(when))
 
939
    return time.strftime('%Y%m%d%H%M%S', gmtime(when))
929
940
 
930
941
 
931
942
def format_delta(delta):