equal
deleted
inserted
replaced
70 except UnicodeDecodeError, inst: |
70 except UnicodeDecodeError, inst: |
71 sub = s[max(0, inst.start-10), inst.start+10] |
71 sub = s[max(0, inst.start-10), inst.start+10] |
72 raise Abort("decoding near '%s': %s!\n" % (sub, inst)) |
72 raise Abort("decoding near '%s': %s!\n" % (sub, inst)) |
73 |
73 |
74 # used by parsedate |
74 # used by parsedate |
75 defaultdateformats = ('%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M', |
75 defaultdateformats = ( |
76 '%a %b %d %H:%M:%S %Y') |
76 '%Y-%m-%d %H:%M:%S', |
|
77 '%Y-%m-%d %I:%M:%S%p', |
|
78 '%Y-%m-%d %H:%M', |
|
79 '%Y-%m-%d %I:%M%p', |
|
80 '%Y-%m-%d', |
|
81 '%m-%d', |
|
82 '%m/%d', |
|
83 '%m/%d/%y', |
|
84 '%m/%d/%Y', |
|
85 '%a %b %d %H:%M:%S %Y', |
|
86 '%a %b %d %I:%M:%S%p %Y', |
|
87 '%b %d %H:%M:%S %Y', |
|
88 '%b %d %I:%M:%S%p', |
|
89 '%b %d %H:%M', |
|
90 '%b %d %I:%M%p', |
|
91 '%b %d %Y', |
|
92 '%b %d', |
|
93 '%H:%M:%S', |
|
94 '%I:%M:%SP', |
|
95 '%H:%M', |
|
96 '%I:%M%p', |
|
97 ) |
77 |
98 |
78 class SignalInterrupt(Exception): |
99 class SignalInterrupt(Exception): |
79 """Exception raised on SIGTERM and SIGHUP.""" |
100 """Exception raised on SIGTERM and SIGHUP.""" |
80 |
101 |
81 # like SafeConfigParser but with case-sensitive keys |
102 # like SafeConfigParser but with case-sensitive keys |
1050 date, tz = string[:-6], string[-5:] |
1071 date, tz = string[:-6], string[-5:] |
1051 tz = int(tz) |
1072 tz = int(tz) |
1052 offset = - 3600 * (tz / 100) - 60 * (tz % 100) |
1073 offset = - 3600 * (tz / 100) - 60 * (tz % 100) |
1053 else: |
1074 else: |
1054 date, offset = string, None |
1075 date, offset = string, None |
|
1076 |
|
1077 # add missing elements |
|
1078 if '%y' not in format.lower(): |
|
1079 date += "@" + datestr(makedate(), "%Y", False) |
|
1080 format += "@%Y" |
|
1081 if '%m' not in format and '%b' not in format: |
|
1082 date += "@" + datestr(makedate(), "%m", False) |
|
1083 format += "@%m" |
|
1084 if '%d' not in format: |
|
1085 date += "@" + datestr(makedate(), "%d", False) |
|
1086 format += "@%d" |
|
1087 |
1055 timetuple = time.strptime(date, format) |
1088 timetuple = time.strptime(date, format) |
1056 localunixtime = int(calendar.timegm(timetuple)) |
1089 localunixtime = int(calendar.timegm(timetuple)) |
1057 if offset is None: |
1090 if offset is None: |
1058 # local timezone |
1091 # local timezone |
1059 unixtime = int(time.mktime(timetuple)) |
1092 unixtime = int(time.mktime(timetuple)) |
1068 formats.""" |
1101 formats.""" |
1069 if not string: |
1102 if not string: |
1070 return 0, 0 |
1103 return 0, 0 |
1071 if not formats: |
1104 if not formats: |
1072 formats = defaultdateformats |
1105 formats = defaultdateformats |
|
1106 string = string.strip() |
1073 try: |
1107 try: |
1074 when, offset = map(int, string.split(' ')) |
1108 when, offset = map(int, string.split(' ')) |
1075 except ValueError: |
1109 except ValueError: |
1076 for format in formats: |
1110 for format in formats: |
1077 try: |
1111 try: |