from datetime import datetime, timedelta
def time_transformations(time_data, transformation_type, **kwargs):
"""
Transforms a list of time values. For development/testing only.
Args:
time_data (list): A list of datetime objects or strings representing time.
transformation_type (str): The type of transformation to apply.
Valid options: "add_seconds", "subtract_minutes", "format_time"
**kwargs: Keyword arguments specific to the transformation type.
Returns:
list: A list of transformed datetime objects or strings. Returns an empty list on error.
"""
transformed_data = []
if not time_data:
return transformed_data # Return empty list if input is empty
for time_value in time_data:
try:
if isinstance(time_value, str):
dt = datetime.fromisoformat(time_value) #convert from string to datetime
elif isinstance(time_value, datetime):
dt = time_value
else:
print(f"Invalid time format: {time_value}. Skipping.")
continue
if transformation_type == "add_seconds":
seconds = kwargs.get("seconds")
if seconds is not None:
dt += timedelta(seconds=seconds)
else:
print("Missing 'seconds' argument for add_seconds. Skipping.")
continue
elif transformation_type == "subtract_minutes":
minutes = kwargs.get("minutes")
if minutes is not None:
dt -= timedelta(minutes=minutes)
else:
print("Missing 'minutes' argument for subtract_minutes. Skipping.")
continue
elif transformation_type == "format_time":
format_string = kwargs.get("format")
if format_string is not None:
formatted_time = dt.strftime(format_string)
transformed_data.append(formatted_time)
else:
print("Missing 'format' argument for format_time. Skipping.")
continue
else:
print(f"Invalid transformation type: {transformation_type}. Skipping.")
continue
transformed_data.append(dt)
except ValueError as e:
print(f"Error processing time {time_value}: {e}. Skipping.")
continue
return transformed_data
if __name__ == '__main__':
# Example usage
time_values = ["2023-10-26T10:00:00", datetime(2023, 10, 26, 12, 0, 0), "2023-10-27T14:30:00"]
# Add 30 seconds to each time value
transformed_time = time_transformations(time_values, "add_seconds", seconds=30)
print(f"Added 30 seconds: {transformed_time}")
# Subtract 15 minutes from each time value
transformed_time = time_transformations(time_values, "subtract_minutes", minutes=15)
print(f"Subtracted 15 minutes: {transformed_time}")
# Format time as HH:MM:SS
transformed_time = time_transformations(time_values, "format_time", format="%H:%M:%S")
print(f"Formatted as HH:MM:SS: {transformed_time}")
Add your comment