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.")