C# 按日期时间作为字符串排序

C# 按日期时间作为字符串排序,c#,C#,我在一列中输入了最近的日期和时间。它目前是一个可以正常工作的字符串,但是在对列进行排序时,它会按第一个数字进行排序(而不是按实际的时间顺序) 您可能需要ISO 8601中的字符串,它是可排序的 DateTime的ToString(“o”)格式重载将使您获得此格式 例如: Console.WriteLine(DateTime.Now.ToString("o")); // Prints 2018-03-22T12:01:53.4144051-07:00 日期仅在存储为日期时与日期类似。字符串不是日

我在一列中输入了最近的日期和时间。它目前是一个可以正常工作的字符串,但是在对列进行排序时,它会按第一个数字进行排序(而不是按实际的时间顺序)

您可能需要ISO 8601中的字符串,它是可排序的

DateTime
ToString(“o”)
格式重载将使您获得此格式

例如:

Console.WriteLine(DateTime.Now.ToString("o")); // Prints 2018-03-22T12:01:53.4144051-07:00

日期仅在存储为日期时与日期类似。字符串不是日期为什么要将日期存储为字符串?@puropoix:如果选择原因格式-
yyyy-MM-dd
,则日期排序很好,这就是问题所在。我同意,一般来说,最好不要使用字符串来表示它们,但出于排序的目的,这是可以做到的。虽然您最终可以通过足够的工作使存储日期和时间作为字符串在特定情况下起作用(并破坏其他情况),但您最好将日期存储为日期和时间,并以适合于每种情况的格式显示它们。最好将它们声明并用作日期时间。它应该是字符串的唯一时间是当它位于表示层(显示)时。感谢这一点,它现在可以按时间顺序排序。我能以dd-MM-yyyy的形式进行排序吗?@JVDB如果您将列表排序为
DateTime
s,您可以根据需要输出日期的字符串表示形式,但dd-MM-yyyy不可排序。我明白了,谢谢!另外,在不过分复杂化的情况下,用这种标准格式删除“T”并去掉秒的小数点是否容易?@JVDB如果您想自定义日期的字符串表示形式,您可能会发现这种方法很有用。@JVDB:只需使用仍然尊重顺序的自定义日期/时间格式,例如,
yyyy-MM-dd HH:MM:ss
,使用不变区域性。不过,如果可能的话,通常最好不要将日期/时间值视为文本。