Generalization of pandas.tseries.index.DatetimeIndex._parsed_string_to_bounds for use with non-standard calendars and cftime.datetime objects.
(date_type, resolution, parsed)
| 79 | |
| 80 | |
| 81 | def _parsed_string_to_bounds(date_type, resolution, parsed): |
| 82 | """Generalization of |
| 83 | pandas.tseries.index.DatetimeIndex._parsed_string_to_bounds |
| 84 | for use with non-standard calendars and cftime.datetime |
| 85 | objects. |
| 86 | """ |
| 87 | if resolution == "year": |
| 88 | return ( |
| 89 | date_type(parsed.year, 1, 1), |
| 90 | date_type(parsed.year + 1, 1, 1) - timedelta(microseconds=1), |
| 91 | ) |
| 92 | elif resolution == "month": |
| 93 | if parsed.month == 12: |
| 94 | end = date_type(parsed.year + 1, 1, 1) - timedelta(microseconds=1) |
| 95 | else: |
| 96 | end = date_type(parsed.year, parsed.month + 1, 1) - timedelta( |
| 97 | microseconds=1 |
| 98 | ) |
| 99 | return date_type(parsed.year, parsed.month, 1), end |
| 100 | elif resolution == "day": |
| 101 | start = date_type(parsed.year, parsed.month, parsed.day) |
| 102 | return start, start + timedelta(days=1, microseconds=-1) |
| 103 | elif resolution == "hour": |
| 104 | start = date_type(parsed.year, parsed.month, parsed.day, parsed.hour) |
| 105 | return start, start + timedelta(hours=1, microseconds=-1) |
| 106 | elif resolution == "minute": |
| 107 | start = date_type( |
| 108 | parsed.year, parsed.month, parsed.day, parsed.hour, parsed.minute |
| 109 | ) |
| 110 | return start, start + timedelta(minutes=1, microseconds=-1) |
| 111 | elif resolution == "second": |
| 112 | start = date_type( |
| 113 | parsed.year, |
| 114 | parsed.month, |
| 115 | parsed.day, |
| 116 | parsed.hour, |
| 117 | parsed.minute, |
| 118 | parsed.second, |
| 119 | ) |
| 120 | return start, start + timedelta(seconds=1, microseconds=-1) |
| 121 | else: |
| 122 | raise KeyError |
| 123 | |
| 124 | |
| 125 | def get_date_field(datetimes, field): |
searching dependent graphs…