Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c3dc649

Browse files
committed
Getting class to work
1 parent d8123e6 commit c3dc649

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

lib/matplotlib/dates.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ def _get_rc_timezone():
189189
MIN_PER_HOUR = 60.
190190
SEC_PER_MIN = 60.
191191
MONTHS_PER_YEAR = 12.
192+
DAYS_PER_400Y = 146097
192193

193194
DAYS_PER_WEEK = 7.
194195
DAYS_PER_MONTH = 30.
@@ -206,6 +207,41 @@ def _get_rc_timezone():
206207
MO, TU, WE, TH, FR, SA, SU)
207208
WEEKDAYS = (MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY)
208209

210+
class _datetimey(datetime.datetime):
211+
212+
def __new__(cls, year, *args, **kwargs):
213+
if year < 1 or year > 9999:
214+
yearoffset = int(np.floor(year / 400) * 400) - 2000
215+
year = year - yearoffset
216+
else:
217+
yearoffset = 0
218+
new = super().__new__(cls, year, *args, **kwargs)
219+
new._yearoffset = yearoffset
220+
return new
221+
222+
def strftime(self, fmt):
223+
year0 = self.year + self._yearoffset
224+
if year0 < 0:
225+
fmt = fmt.replace('%Y', f'{year0:05d}')
226+
else:
227+
fmt = fmt.replace('%Y', f'{year0:04d}')
228+
return super().strftime(fmt)
229+
230+
def __str__(self):
231+
return self.strftime('%Y-%m-%dT%H:%M:%S.%f%z')
232+
233+
@staticmethod
234+
def _datetime_to_datetimey(new, year_offset):
235+
return _datetimey(new.year + year_offset, new.month, new.day,
236+
new.hour, new.minute, new.second, new.microsecond,
237+
new.tzinfo)
238+
239+
def astimezone(self, tz=None):
240+
print('self', self)
241+
new = super(_datetimey, self).astimezone(tz)
242+
new = self._datetime_to_datetimey(new, self._yearoffset)
243+
return new
244+
209245

210246
def _to_ordinalf(dt):
211247
"""

0 commit comments

Comments
 (0)