Skip to content

Instantly share code, notes, and snippets.

@Dminor7
Created November 29, 2023 06:19
Show Gist options
  • Save Dminor7/eb7a0679d6e1990385e003addbd9080f to your computer and use it in GitHub Desktop.
Save Dminor7/eb7a0679d6e1990385e003addbd9080f to your computer and use it in GitHub Desktop.
Generate a time range (start_time, end_time) based on a given timestamp, with intervals last 30 minutes completed. Using pendulum package
import pendulum
def generate_30min_time_range(timestamp_str):
timestamp = pendulum.parse(timestamp_str)
start_time = timestamp.start_of('hour')
if timestamp.minute >= 30:
start_time = start_time.add(minutes=30)
result = []
while start_time <= timestamp:
result.append(start_time)
start_time = start_time.add(minutes=30)
result_str = [dt.format("YYYY-MM-DDTHH:mm:ss") for dt in result]
end_time = ",".join(result_str)
start_time = pendulum.parse(end_time).subtract(minutes=30).format("YYYY-MM-DDTHH:mm:ss")
return start_time, end_time
print(generate_30min_time_range("2023-11-11T09:35:00")) # ('2023-11-11T09:00:00', '2023-11-11T09:30:00')
print(generate_30min_time_range("2023-11-11T09:30:00")) # ('2023-11-11T09:00:00', '2023-11-11T09:30:00')
print(generate_30min_time_range("2023-11-11T09:15:00")) # ('2023-11-11T08:30:00', '2023-11-11T09:00:00')
print(generate_30min_time_range("2023-11-11T07:01:00")) # ('2023-11-11T06:30:00', '2023-11-11T07:00:00')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment