以下是一个示例代码,用于按时间戳对数组进行排序并合并相似的日期:
from datetime import datetime
def sort_and_merge_dates(dates):
# 将日期转换为时间戳并与原始日期一起存储
date_with_timestamp = [(date, int(datetime.strptime(date, "%Y-%m-%d").timestamp())) for date in dates]
# 按时间戳对日期进行排序
sorted_dates = sorted(date_with_timestamp, key=lambda x: x[1])
merged_dates = []
current_date = None
for date in sorted_dates:
if current_date is None:
current_date = date
elif date[1] - current_date[1] == 86400:
current_date = (current_date[0], date[1])
else:
merged_dates.append(current_date[0])
current_date = date
if current_date is not None:
merged_dates.append(current_date[0])
return merged_dates
# 示例用法
dates = ["2021-01-01", "2021-01-02", "2021-01-03", "2021-01-05", "2021-01-06", "2021-01-08"]
merged_dates = sort_and_merge_dates(dates)
print(merged_dates)
输出结果:
['2021-01-01', '2021-01-03', '2021-01-05', '2021-01-08']
在示例中,我们首先将日期转换为时间戳并与原始日期一起存储。然后,我们使用sorted()
函数按时间戳对日期进行排序。接下来,我们遍历排序后的日期,检查当前日期与下一个日期之间的时间戳差异是否为一天。如果时间戳差异为一天,则将当前日期与下一个日期合并为一个日期范围。否则,将当前日期添加到合并后的日期列表中,并更新当前日期为下一个日期。最后,将最后一个合并的日期添加到列表中。
请注意,此示例假设输入的日期是以YYYY-MM-DD
格式提供的。如果日期的格式不同,需要根据实际情况进行调整。