Skip to content

Time

labridge.common.utils.time

labridge.common.utils.time.datetime_to_str(date_time)

Transform datetime into formatted strings.

PARAMETER DESCRIPTION
date_time

The datetime.

TYPE: datetime

RETURNS DESCRIPTION
Tuple[str, str]

Tuple[str, str]: The formatted date string and time string.

Source code in labridge\common\utils\time.py
30
31
32
33
34
35
36
37
38
39
40
41
42
def datetime_to_str(date_time: datetime.datetime) -> Tuple[str, str]:
	r"""
	Transform datetime into formatted strings.

	Args:
		date_time (datetime.datetime): The datetime.

	Returns:
		Tuple[str, str]: The formatted date string and time string.
	"""
	date_str = date_time.date().strftime(f"{DATE_FORMAT}")
	time_str = date_time.time().strftime(f"{TIME_FORMAT}")
	return date_str, time_str

labridge.common.utils.time.get_time()

Get current date time in DATE_FORMAT and TIME_FORMAT

RETURNS DESCRIPTION
Tuple[str, str]

Tuple[str, str]: The formatted date string and time string.

Source code in labridge\common\utils\time.py
18
19
20
21
22
23
24
25
26
27
def get_time() -> Tuple[str, str]:
	r"""
	Get current date time in `DATE_FORMAT` and `TIME_FORMAT`

	Returns:
		Tuple[str, str]: The formatted date string and time string.
	"""
	now = time.strftime(f"{DATE_FORMAT} {TIME_FORMAT}")
	date, h_m_s = now.split()
	return date, h_m_s

labridge.common.utils.time.parse_date_list(start_date_str, end_date_str)

Return the formatted strings of all dates from start_date to end_date.

PARAMETER DESCRIPTION
start_date_str

The formatted string of the start date.

TYPE: str

end_date_str

The formatted string of the end date.

TYPE: str

RETURNS DESCRIPTION
List[str]

List[str]: The formatted date string.

RAISES DESCRIPTION
-ValueError

If the end_date is earlier than the start_date.

Source code in labridge\common\utils\time.py
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
def parse_date_list(start_date_str: str, end_date_str: str) -> List[str]:
	r"""
	Return the formatted strings of all dates from start_date to end_date.

	Args:
		start_date_str (str): The formatted string of the start date.
		end_date_str (str): The formatted string of the end date.

	Returns:
		List[str]: The formatted date string.

	Raises:
		- ValueError: If the end_date is earlier than the start_date.
		- Any other errors raises in internal process.
	"""
	start_date = str_to_date(start_date_str)
	end_date = str_to_date(end_date_str)
	if end_date < start_date:
		raise ValueError("The end_date can not be earlier than the start_date!")

	date_list = []
	current_date = start_date
	while current_date <= end_date:
		date_list.append(current_date.strftime(DATE_FORMAT))
		current_date = current_date + datetime.timedelta(days=1)
	return date_list

labridge.common.utils.time.parse_delta_time(time_unit)

Get the delta time from a unit of a formatted time_delta string.

PARAMETER DESCRIPTION
time_unit

A unit of a formatted time_delta string.

TYPE: str

RETURNS DESCRIPTION
dict
  • If the time_unit is valid, return the parsed delta time. For example: "2h" -> {"hours": 2}
  • If the time_unit is invalid, return an empty dict.

TYPE: Dict[str, int]

Source code in labridge\common\utils\time.py
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
def parse_delta_time(time_unit: str) -> Dict[str, int]:
	r"""
	Get the delta time from a unit of a formatted time_delta string.

	Args:
		time_unit (str): A unit of a formatted time_delta string.

	Returns:
		dict:
			- If the time_unit is valid, return the parsed delta time. For example: "2h" -> {"hours": 2}
			- If the time_unit is invalid, return an empty dict.
	"""
	numbers = [char for char in time_unit if char.isnumeric()]
	flag = [char for char in time_unit if char.isalpha()]

	num = int("".join(numbers))
	flag_str = "".join(flag).lower()

	if flag_str in DELTA_TIME_FLAG_MAPPING.keys():
		key = DELTA_TIME_FLAG_MAPPING.get(flag_str)
		return {key: num}
	return {}

labridge.common.utils.time.str_to_date(date_str)

Transform a formatted date string to datetime.date.

PARAMETER DESCRIPTION
date_str

The date string in format DATE_FORMAT.

TYPE: str

RETURNS DESCRIPTION
date

datetime.date: The date.

RAISES DESCRIPTION
ValueError

If the date_str does not match the DATE_FORMAT`.

Source code in labridge\common\utils\time.py
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
def str_to_date(date_str: str) -> datetime.date:
	r"""
	Transform a formatted date string to `datetime.date`.

	Args:
		date_str (str): The date string in format `DATE_FORMAT`.

	Returns:
		datetime.date: The date.

	Raises:
		ValueError: If the date_str does not match the DATE_FORMAT`.
	"""
	year_month_day = date_str.split("-")

	try:
		my_date = datetime.date(
			year=int(year_month_day[0]),
			month=int(year_month_day[1]),
			day=int(year_month_day[2]),
		)
		return my_date
	except Exception:
		raise ValueError(f"The input date string {date_str} is invalid.")

labridge.common.utils.time.str_to_datetime(date_str, time_str)

Transform formatted time strings to datetime.datetime.

PARAMETER DESCRIPTION
date_str

The date string in format DATE_FORMAT.

TYPE: str

time_str

The time string in format TIME_FORMAT.

TYPE: str

RETURNS DESCRIPTION
datetime

datetime.datetime: The datetime

Source code in labridge\common\utils\time.py
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
def str_to_datetime(date_str: str, time_str: str) -> datetime.datetime:
	r"""
	Transform formatted time strings to `datetime.datetime`.

	Args:
		date_str (str): The date string in format `DATE_FORMAT`.
		time_str (str): The time string in format `TIME_FORMAT`.

	Returns:
		datetime.datetime: The datetime

	Raises:
		Any Error raises in `str_to_date` or `str_to_time`.
	"""
	my_date = str_to_date(date_str)
	my_time = str_to_time(time_str)
	my_datetime = datetime.datetime(
		year=my_date.year,
		month=my_date.month,
		day=my_date.day,
		hour=my_time.hour,
		minute=my_time.minute,
		second=my_time.second,
	)
	return my_datetime

labridge.common.utils.time.str_to_delta_time(time_str)

Transform a formatted time_delta string to datetime.timedelta.

PARAMETER DESCRIPTION
time_str

The time_delta str in format DELTA_TIME_FORMAT.

TYPE: str

RETURNS DESCRIPTION
timedelta

datetime.timedelta: The time delta.

RAISES DESCRIPTION
ValueError

If the time_str does not match the DELTA_TIME_FORMAT.

Source code in labridge\common\utils\time.py
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
def str_to_delta_time(time_str: str) -> datetime.timedelta:
	r"""
	Transform a formatted time_delta string to `datetime.timedelta`.

	Args:
		time_str (str): The time_delta str in format `DELTA_TIME_FORMAT`.

	Returns:
		datetime.timedelta: The time delta.

	Raises:
		ValueError: If the time_str does not match the `DELTA_TIME_FORMAT`.
	"""
	hour_minute_second = time_str.split(":")

	default = {
		"hours": 0,
		"minutes": 0,
		"seconds": 0,
	}

	for unit in hour_minute_second:
		parsed_dict = parse_delta_time(time_unit=unit)
		default.update(parsed_dict)

	try:
		delta_time = datetime.timedelta(**default)
		return delta_time
	except Exception:
		raise ValueError(f"The input time string {time_str} is invalid.")

labridge.common.utils.time.str_to_time(time_str)

Transform a formatted time string to datetime.time.

PARAMETER DESCRIPTION
time_str

The time string in format TIME_FORMAT.

TYPE: str

RETURNS DESCRIPTION
time

datetime.time: The time.

RAISES DESCRIPTION
ValueError

If the time_str does not match the TIME_FORMAT`.

Source code in labridge\common\utils\time.py
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
def str_to_time(time_str: str) -> datetime.time:
	r"""
	Transform a formatted time string to `datetime.time`.

	Args:
		time_str (str): The time string in format `TIME_FORMAT`.

	Returns:
		datetime.time: The time.

	Raises:
		ValueError: If the time_str does not match the TIME_FORMAT`.
	"""
	hour_minute_second = time_str.split(":")

	try:
		my_time = datetime.time(
			hour=int(hour_minute_second[0]),
			minute=int(hour_minute_second[1]),
			second=int(hour_minute_second[2]),
		)
		return my_time
	except Exception:
		raise ValueError(f"The input time string {time_str} is invalid.")