Adapted from pandas.tslib.delta_to_tick
(delta: timedelta | pd.Timedelta)
| 798 | |
| 799 | |
| 800 | def delta_to_tick(delta: timedelta | pd.Timedelta) -> Tick: |
| 801 | """Adapted from pandas.tslib.delta_to_tick""" |
| 802 | if isinstance(delta, pd.Timedelta) and delta.nanoseconds != 0: |
| 803 | # pandas.Timedelta has nanoseconds, but these are not supported |
| 804 | raise ValueError( |
| 805 | "Unable to convert 'pandas.Timedelta' object with non-zero " |
| 806 | "nanoseconds to 'CFTimeOffset' object" |
| 807 | ) |
| 808 | if delta.microseconds == 0: |
| 809 | seconds = delta.days * 86400 + delta.seconds |
| 810 | if seconds % 3600 == 0: |
| 811 | return Hour(n=seconds // 3600) |
| 812 | elif seconds % 60 == 0: |
| 813 | return Minute(n=seconds // 60) |
| 814 | else: |
| 815 | return Second(n=seconds) |
| 816 | # Regardless of the days and seconds this will always be a Millisecond |
| 817 | # or Microsecond object |
| 818 | elif delta.microseconds % 1_000 == 0: |
| 819 | return Millisecond(n=delta.microseconds // 1_000) |
| 820 | else: |
| 821 | return Microsecond(n=delta.microseconds) |
| 822 | |
| 823 | |
| 824 | def to_cftime_datetime(date_str_or_date, calendar=None): |
no test coverage detected
searching dependent graphs…