A convenience wrapper for datetime.datetime with a default string format.
| 85 | pass |
| 86 | |
| 87 | class Date(datetime): |
| 88 | """ A convenience wrapper for datetime.datetime with a default string format. |
| 89 | """ |
| 90 | format = DEFAULT_DATE_FORMAT |
| 91 | # Date.year |
| 92 | # Date.month |
| 93 | # Date.day |
| 94 | # Date.minute |
| 95 | # Date.second |
| 96 | @property |
| 97 | def minutes(self): |
| 98 | return self.minute |
| 99 | @property |
| 100 | def seconds(self): |
| 101 | return self.second |
| 102 | @property |
| 103 | def microseconds(self): |
| 104 | return self.microsecond |
| 105 | @property |
| 106 | def week(self): |
| 107 | return self.isocalendar()[1] |
| 108 | @property |
| 109 | def weekday(self): |
| 110 | return self.isocalendar()[2] |
| 111 | @property |
| 112 | def timestamp(self): |
| 113 | return int(mktime(self.timetuple())) # Seconds elapsed since 1/1/1970. |
| 114 | def strftime(self, format): |
| 115 | if self.year < 1900: |
| 116 | # Python's strftime() doesn't handle year < 1900: |
| 117 | return strftime(format, (1900,) + self.timetuple()[1:]).replace("1900", str(self.year), 1) |
| 118 | return datetime.strftime(self, format) |
| 119 | def copy(self): |
| 120 | return date(self.timestamp) |
| 121 | def __str__(self): |
| 122 | return self.strftime(self.format) |
| 123 | def __repr__(self): |
| 124 | return "Date(%s)" % repr(self.__str__()) |
| 125 | def __iadd__(self, time): |
| 126 | return self.__add__(time) |
| 127 | def __isub__(self, time): |
| 128 | return self.__sub__(time) |
| 129 | def __add__(self, time): |
| 130 | d = datetime.__add__(self, time) |
| 131 | return date(d.year, d.month, d.day, d.hour, d.minute, d.second, d.microsecond, self.format) |
| 132 | def __sub__(self, time): |
| 133 | d = datetime.__sub__(self, time) |
| 134 | if isinstance(d, timedelta): |
| 135 | # Subtracting two dates returns a time(). |
| 136 | return d |
| 137 | return date(d.year, d.month, d.day, d.hour, d.minute, d.second, d.microsecond, self.format) |
| 138 | |
| 139 | def date(*args, **kwargs): |
| 140 | """ Returns a Date from the given parameters: |
no outgoing calls
no test coverage detected
searching dependent graphs…