from datetime import datetime, timedelta
def validate_timestamps(data, expected_format="%Y-%m-%d %H:%M:%S"):
"""
Validates a nested structure of timestamps.
"""
def is_valid_timestamp(timestamp_value):
"""Checks if a single timestamp value is valid."""
if not isinstance(timestamp_value, str):
return False # Must be a string
try:
datetime.strptime(timestamp_value, expected_format)
return True
except ValueError:
return False
def validate_level(data_level):
"""Validates a single level of the nested structure."""
if isinstance(data_level, list):
for item in data_level:
if not validate_level(item):
return False
return True
elif isinstance(data_level, dict):
for key, value in data_level.items():
if not validate_level(value):
return False
return True
elif isinstance(data_level, str):
return is_valid_timestamp(data_level)
elif isinstance(data_level, datetime):
return True # Already a datetime object
else:
return True # Consider non-string/list/dict as valid
return validate_level(data)
if __name__ == '__main__':
# Example Usage
data1 = [
"2023-10-26 10:00:00",
{"event": "start", "time": "2023-10-26 10:05:00"},
[1,2, "2023-10-26 10:10:00"]
]
print(f"Data 1 is valid: {validate_timestamps(data1)}")
data2 = {
"start_time": "2023-10-26 10:00:00",
"end_time": "2023-10-26 10:10:00",
"intermediate": [
"invalid_format",
{"another_time": "2023-10-26 10:05:00"}
]
}
print(f"Data 2 is valid: {validate_timestamps(data2)}")
data3 = [datetime(2023, 10, 26, 10, 0, 0), "2023-10-26 10:15:00"]
print(f"Data 3 is valid: {validate_timestamps(data3)}")
Add your comment