Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 851b95f

Browse files
Chore: add date_generate.py for testing idea for new project
1 parent 30b0fab commit 851b95f

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

‎python/date_generate.py‎

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
from datetime import datetime
2+
import re, traceback
3+
4+
class FormatError(Exception):
5+
pass
6+
7+
def date_generate(start_date:str, end_date:str, start_hour:str, end_hour:str, min_active_days_per_week:int, max_active_days_per_week:int) -> list[datetime]:
8+
"""
9+
Generate a list of date between two dates
10+
11+
Parameters:
12+
start_date(str): starting date, format as YYYY-MM-DD
13+
end_date(str): ending date, format as YYYY-MM-DD
14+
start_hour(str): starting hour per date, format as hour:minutes:second
15+
end_hour(str): ending hour per date, format as hour:minutes:second
16+
min_active_days_per_week(int): minimum active days per week, used for random function as the minimum value
17+
max_active_days_per_week(int): maximum active days per week, used for maximum value in random function
18+
19+
Return:
20+
list[datetime]: return a list of datetime objects
21+
"""
22+
date_regex_pattern = r'^(\d{4})-(\d{2})-(\d{2})$'
23+
if not bool(re.match(date_regex_pattern, start_date)) or not bool(re.match(date_regex_pattern, end_date)):
24+
raise FormatError('Invalid date format. Date format must match "YYYY-MM-DD"')
25+
26+
27+
28+
29+
30+
if __name__ == '__main__':
31+
try:
32+
date_list = date_generate('2023年01月01日', '2023年03月01日', '08:00:00', '17:00:00', 2, 5)
33+
34+
if date_list:
35+
for date in date_list:
36+
print(date)
37+
except FormatError as e:
38+
traceback.print_exc()

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /