5. 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
5.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'
5.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
5.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
5.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
5.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)
5.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
5.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))
5.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
5.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))
5.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
5.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)
5.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
5.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
5.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
5.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
5.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
5.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
5.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
5.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
5.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
5.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
5.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
5.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]
5.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
5.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)