| 433 | __win_platform = platform.system() == "Windows" |
| 434 | |
| 435 | def _get_timestamp(self, value: datetime.datetime): |
| 436 | seconds_offset = 0 |
| 437 | if TimestampSerializer.__win_platform and value.tzinfo is None: |
| 438 | is_dst = time.daylight and time.localtime().tm_isdst > 0 |
| 439 | seconds_offset = time.altzone if is_dst else time.timezone |
| 440 | value = value.replace(tzinfo=datetime.timezone.utc) |
| 441 | micros = int((value.timestamp() + seconds_offset) * 1_000_000) |
| 442 | seconds, micros_rem = divmod(micros, 1_000_000) |
| 443 | nanos = micros_rem * 1000 |
| 444 | return seconds, nanos |
| 445 | |
| 446 | def write(self, write_context, value: datetime.datetime): |
| 447 | if not isinstance(value, datetime.datetime): |