You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何验证UTC格式的日期字符串列表是否按日期正确排序

验证UTC日期字符串列表排序的方法

你给出的是ISO 8601标准格式的UTC时间字符串,该格式的特殊属性是:字符串的字典排序结果和实际时间的先后顺序完全一致,因此你可以选择直接比对字符串,或者转换为时间对象后比对两种方案,以下是Python的实现示例(和你的示例代码语法匹配):

方案1:直接字符串比对(高效,适合格式统一的场景)

不需要做类型转换,直接遍历列表比对相邻元素即可,你给出的示例列表是降序排列(最新时间排在最前),验证代码如下:

# 验证是否为降序排列(时间从新到旧)
def is_desc_sorted(lst):
    return all(lst[i] >= lst[i+1] for i in range(len(lst)-1))

# 验证是否为升序排列(时间从旧到新)
def is_asc_sorted(lst):
    return all(lst[i] <= lst[i+1] for i in range(len(lst)-1))

# 测试你的示例列表
test_list = ['2021-11-11T22:23:44.960Z', '2021-11-11T22:23:37.937Z', '2021-11-11T22:23:34.687Z', '2021-11-11T22:22:40.670Z']
print(is_desc_sorted(test_list)) # 输出:True
print(is_asc_sorted(test_list)) # 输出:False

该方案的适用前提:

  • 列表中所有字符串都是标准YYYY-MM-DDTHH:mm:ss.sssZ格式,无格式差异
  • 所有时间都是UTC时区,无其他时区偏移

方案2:转换为datetime对象比对(兼容性强,支持格式校验)

如果无法保证列表中所有字符串格式完全标准,建议先转换为datetime对象后再比对,同时可以顺便校验时间格式的合法性:

from datetime import datetime

def is_desc_sorted(lst):
    # 将UTC字符串转换为标准datetime对象
    dt_list = [datetime.fromisoformat(item.replace('Z', '+00:00')) for item in lst]
    return all(dt_list[i] >= dt_list[i+1] for i in range(len(dt_list)-1))

test_list = ['2021-11-11T22:23:44.960Z', '2021-11-11T22:23:37.937Z', '2021-11-11T22:23:34.687Z', '2021-11-11T22:22:40.670Z']
print(is_desc_sorted(test_list)) # 输出:True

如果列表中存在非法时间格式,该方法会直接抛出异常,适合需要同时校验格式和排序的场景。

内容的提问来源于stack exchange,提问作者user17397395

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 00:36:04