2765
2765
def rfc3339_duration_to_delta(duration):
2766
2766
"""Parse an RFC 3339 "duration" and return a datetime.timedelta
2768
>>> rfc3339_duration_to_delta("P7D")
2769
datetime.timedelta(7)
2770
>>> rfc3339_duration_to_delta("PT60S")
2771
datetime.timedelta(0, 60)
2772
>>> rfc3339_duration_to_delta("PT60M")
2773
datetime.timedelta(0, 3600)
2774
>>> rfc3339_duration_to_delta("PT24H")
2775
datetime.timedelta(1)
2776
>>> rfc3339_duration_to_delta("P1W")
2777
datetime.timedelta(7)
2778
>>> rfc3339_duration_to_delta("PT5M30S")
2779
datetime.timedelta(0, 330)
2780
>>> rfc3339_duration_to_delta("P1DT3M20S")
2781
datetime.timedelta(1, 200)
2768
>>> rfc3339_duration_to_delta("P7D") == datetime.timedelta(7)
2770
>>> rfc3339_duration_to_delta("PT60S") == datetime.timedelta(0, 60)
2772
>>> rfc3339_duration_to_delta("PT60M") == datetime.timedelta(0, 3600)
2774
>>> rfc3339_duration_to_delta("PT24H") == datetime.timedelta(1)
2776
>>> rfc3339_duration_to_delta("P1W") == datetime.timedelta(7)
2778
>>> rfc3339_duration_to_delta("PT5M30S") == datetime.timedelta(0, 330)
2780
>>> rfc3339_duration_to_delta("P1DT3M20S") == datetime.timedelta(1, 200)
2784
2784
# Parsing an RFC 3339 duration with regular expressions is not
2864
2864
def string_to_delta(interval):
2865
2865
"""Parse a string and return a datetime.timedelta
2867
>>> string_to_delta('7d')
2868
datetime.timedelta(7)
2869
>>> string_to_delta('60s')
2870
datetime.timedelta(0, 60)
2871
>>> string_to_delta('60m')
2872
datetime.timedelta(0, 3600)
2873
>>> string_to_delta('24h')
2874
datetime.timedelta(1)
2875
>>> string_to_delta('1w')
2876
datetime.timedelta(7)
2877
>>> string_to_delta('5m 30s')
2878
datetime.timedelta(0, 330)
2867
>>> string_to_delta('7d') == datetime.timedelta(7)
2869
>>> string_to_delta('60s') == datetime.timedelta(0, 60)
2871
>>> string_to_delta('60m') == datetime.timedelta(0, 3600)
2873
>>> string_to_delta('24h') == datetime.timedelta(1)
2875
>>> string_to_delta('1w') == datetime.timedelta(7)
2877
>>> string_to_delta('5m 30s') == datetime.timedelta(0, 330)