4. Examples¶
datetime.datetime
instance can be used as an argument value as well as
time-string in the following examples.
Note
Use not the DST offset, but the standard time
offset when you use datetime string as an argument. DateTimeRange
class
automatically calculate daylight saving time. Some examples are below
>>>from datetimerange import DateTimeRange >>>time_range = DateTimeRange("2015-03-08T00:00:00-0400", "2015-03-08T12:00:00-0400") >>>time_range.timedelta datetime.timedelta(0, 39600) # 11 hours>>>from datetimerange import DateTimeRange >>>time_range = DateTimeRange("2015-11-01T00:00:00-0400", "2015-11-01T12:00:00-0400") >>>time_range.timedelta datetime.timedelta(0, 46800) # 13 hours
4.1. Create a DateTimeRange instance from start and end datetime¶
- Sample Code
from datetimerange import DateTimeRange time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900") str(time_range)
- Output
'2015-03-22T10:00:00+0900 - 2015-03-22T10:10:00+0900'
4.2. Compare time ranges¶
- Sample Code
from datetimerange import DateTimeRange lhs = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900") rhs = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900") print("lhs == rhs: ", lhs == rhs) print("lhs != rhs: ", lhs != rhs)
- Output
lhs == rhs: True lhs != rhs: False
4.3. Move the time range¶
- Sample Code
import datetime from datetimerange import DateTimeRange value = DateTimeRange("2015-03-22T10:10:00+0900", "2015-03-22T10:20:00+0900") print(value + datetime.timedelta(seconds=10 * 60)) print(value - datetime.timedelta(seconds=10 * 60))
- Output
2015-03-22T10:20:00+0900 - 2015-03-22T10:30:00+0900 2015-03-22T10:00:00+0900 - 2015-03-22T10:10:00+0900
4.4. Change string conversion format¶
- Sample Code
from datetimerange import DateTimeRange time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900") time_range.start_time_format = "%Y/%m/%d" time_range.end_time_format = "%Y/%m/%dT%H:%M:%S%z" time_range
- Output
2015/03/22 - 2015/03/22T10:10:00+0900
4.5. Add elapsed time when conversion to string¶
- Sample Code
from datetimerange import DateTimeRange time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900") time_range.is_output_elapse = True time_range
- Output
2015-03-22T10:00:00+0900 - 2015-03-22T10:10:00+0900 (0:10:00)
4.6. Change separator of the converted string¶
- Sample Code
from datetimerange import DateTimeRange time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900") time_range.separator = " to " time_range
- Output
2015-03-22T10:00:00+0900 to 2015-03-22T10:10:00+0900
4.7. Get start time as datetime.datetime¶
- Sample Code
from datetimerange import DateTimeRange time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900") time_range.start_datetime
- Output
datetime.datetime(2015, 3, 22, 10, 0, tzinfo=tzoffset(None, 32400))
4.8. Get start time as string (formatted with start_time_format
)¶
- Sample Code
from datetimerange import DateTimeRange time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900") print(time_range.get_start_time_str()) time_range.start_time_format = "%Y/%m/%d %H:%M:%S" print(time_range.get_start_time_str())
- Output
2015-03-22T10:00:00+0900 2015/03/22 10:00:00
4.9. Get end time as datetime.datetime¶
- Sample Code
from datetimerange import DateTimeRange time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900") time_range.end_datetime
- Output
datetime.datetime(2015, 3, 22, 10, 10, tzinfo=tzoffset(None, 32400))
4.10. Get end time as string (formatted with end_time_format
)¶
- Sample Code
from datetimerange import DateTimeRange time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900") print(time_range.get_end_time_str()) time_range.end_time_format = "%Y/%m/%d %H:%M:%S" print(time_range.get_end_time_str())
- Output
2015-03-22T10:10:00+0900 2015/03/22 10:10:00
4.11. Get datetime.timedelta (from start_datetime to the end_datetime)¶
- Sample Code
from datetimerange import DateTimeRange time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900") time_range.timedelta
- Output
datetime.timedelta(0, 600)
4.12. Get timedelta as seconds (from start_datetime to the end_datetime)¶
- Sample Code
from datetimerange import DateTimeRange time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900") time_range.get_timedelta_second()
- Output
600.0
4.13. Get an iterator¶
- Sample Code 1
import datetime from datetimerange import DateTimeRange time_range = DateTimeRange("2015-01-01T00:00:00+0900", "2015-01-04T00:00:00+0900") for value in time_range.range(datetime.timedelta(days=1)): print(value)
- Output 1
2015-01-01 00:00:00+09:00 2015-01-02 00:00:00+09:00 2015-01-03 00:00:00+09:00 2015-01-04 00:00:00+09:00
- Sample Code 2
from datetimerange import DateTimeRange from dateutil.relativedelta import relativedelta time_range = DateTimeRange("2015-01-01T00:00:00+0900", "2016-01-01T00:00:00+0900") for value in time_range.range(relativedelta(months=+4)): print(value)
- Output 2
2015-01-01 00:00:00+09:00 2015-05-01 00:00:00+09:00 2015-09-01 00:00:00+09:00 2016-01-01 00:00:00+09:00
4.14. Set start time¶
- Sample Code
from datetimerange import DateTimeRange time_range = DateTimeRange() print(time_range) time_range.set_start_datetime("2015-03-22T10:00:00+0900") print(time_range)
- Output
NaT - NaT 2015-03-22T10:00:00+0900 - NaT
4.15. Set end time¶
- Sample Code
from datetimerange import DateTimeRange time_range = DateTimeRange() print(time_range) time_range.set_end_datetime("2015-03-22T10:10:00+0900") print(time_range)
- Output
NaT - NaT NaT - 2015-03-22T10:10:00+0900
4.16. Set time range (set both start and end time)¶
- Sample Code
from datetimerange import DateTimeRange time_range = DateTimeRange() print(time_range) time_range.set_time_range("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900") print(time_range)
- Output
NaT - NaT 2015-03-22T10:00:00+0900 - 2015-03-22T10:10:00+0900
4.17. Test whether the time range is set¶
- Sample Code
from datetimerange import DateTimeRange time_range = DateTimeRange() print(time_range.is_set()) time_range.set_time_range("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900") print(time_range.is_set())
- Output
False True
4.18. Validate time inversion¶
- Sample Code
from datetimerange import DateTimeRange time_range = DateTimeRange("2015-03-22T10:10:00+0900", "2015-03-22T10:00:00+0900") try: time_range.validate_time_inversion() except ValueError: print("time inversion")
- Output
time inversion
4.19. Test whether the time range is valid¶
- Sample Code
from datetimerange import DateTimeRange time_range = DateTimeRange() print(time_range.is_valid_timerange()) time_range.set_time_range("2015-03-22T10:20:00+0900", "2015-03-22T10:10:00+0900") print(time_range.is_valid_timerange()) time_range.set_time_range("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900") print(time_range.is_valid_timerange())
- Output
False False True
4.20. Test whether a value within the time range¶
- Sample Code
from datetimerange import DateTimeRange time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900") print("2015-03-22T10:05:00+0900" in time_range) print("2015-03-22T10:15:00+0900" in time_range) time_range_smaller = DateTimeRange("2015-03-22T10:03:00+0900", "2015-03-22T10:07:00+0900") print(time_range_smaller in time_range)
- Output
True False True
4.21. Test whether a value intersects the time range¶
- Sample Code
from datetimerange import DateTimeRange time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900") x = DateTimeRange("2015-03-22T10:05:00+0900", "2015-03-22T10:15:00+0900") time_range.is_intersection(x)
- Output
True
4.22. Make an intersected time range¶
- Sample Code
from datetimerange import DateTimeRange time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900") x = DateTimeRange("2015-03-22T10:05:00+0900", "2015-03-22T10:15:00+0900") time_range.intersection(x)
- Output
2015-03-22T10:05:00+0900 - 2015-03-22T10:10:00+0900
4.23. Make an subtracted time range¶
- Sample Code
from datetimerange import DateTimeRange time_range = DateTimeRange("2015-01-22T09:50:00+0900", "2015-01-22T10:00:00+0900") x = DateTimeRange("2015-01-22T09:55:00+0900", "2015-01-22T09:56:00+0900") time_range.subtract(x)
- Output
[2015-01-22T09:50:00+0900 - 2015-01-22T09:55:00+0900, 2015-01-22T09:56:00+0900 - 2015-01-22T10:00:00+0900]
4.24. Make an encompassed time range¶
- Sample Code
from datetimerange import DateTimeRange time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900") x = DateTimeRange("2015-03-22T10:05:00+0900", "2015-03-22T10:15:00+0900") time_range.encompass(x)
- Output
2015-03-22T10:00:00+0900 - 2015-03-22T10:15:00+0900
4.25. Truncate time range¶
- Sample Code
from datetimerange import DateTimeRange time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900") time_range.is_output_elapse = True print("before truncate: ", time_range) time_range.truncate(10) print("after truncate: ", time_range)
- Output
before truncate: 2015-03-22T10:00:00+0900 - 2015-03-22T10:10:00+0900 (0:10:00) after truncate: 2015-03-22T10:00:30+0900 - 2015-03-22T10:09:30+0900 (0:09:00)