gpt4 book ai didi

sorting - 将 ISO 8601 日期向前或向后排序

转载 作者:行者123 更新时间:2023-12-04 00:03:09 25 4
gpt4 key购买 nike

我有一个 ISO8601 格式的日期数组,需要对它们进行排序。有没有人对可行的算法提出建议?我不认为它们会作为字符串排序,除非我错了很多,所以我认为它们必须分解成它们的组成部分?

有人可以发布算法,最好是语言不可知的,但只要 VB 或 C# 示例只使用字符串和整数,并且没有语言内置的函数,它就可以工作。

谢谢!

最佳答案

这取决于您是否正在混合格式。

在任何特定格式中,例如 yyyy-mm-ddyyyy-Www-d , ISO 8601 旨在按字典顺序排序(负年份除外)。

来自 ISO 8601 wikipedia page :

Date and time values are organised from the most to the least significant: year, month (or week), day, hour, minute, second, and fraction of second. The lexicographical order of the representation thus corresponds to chronological order, except for date representations involving negative years. This allows dates to be naturally sorted by, for example, file systems.



这意味着字符串排序应该可以正常工作。

只有当你混合格式时才行不通。如果是这种情况,您需要在比较之前转换为特定格式。我的意思是将所有格式转换为 yyyy-mm-dd在比较之前,然后根据需要返回。

例如,如果您有输入数据:
2010-03-01
2010-W01-1

您可以先将它们全部更改为:
2010-03-01:2010-03-01
2010-01-04:2010-W01-1

(使用特定形式为实际数据添加前缀)然后对其进行排序。排序后,您将返回并删除所有内容,直到第一个 :每个元素中的字符,这将恢复原始形式。

不一定是最有效的方式,但如果您想保留原始形式,则需要执行类似的操作。如果这不是问题,只需将它们转换为特定形式一次并保持原样。

关于sorting - 将 ISO 8601 日期向前或向后排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9576860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com