C#时间戳比较string.Compare

时间:2012-12-26 12:11:20

标签: c# string datetime

使用string.Compare(timeA,TimeB)总是会返回-1,因为:

timeA是在timeB

之前发生的时间戳

两者都采用以下格式:12/27/2012 00:59:06又名mm/dd/yyyy hh:mm:ss来自DateTime.UtcNow

4 个答案:

答案 0 :(得分:5)

是的。为什么期望能够发挥作用?如果您想按时间排序,请将它们解析为DateTime值并进行比较。您将它们比作字符串,以便按字典顺序进行比较。当然,如果您的时间戳格式为yyyy-MM-ddTHH:mm:ss或类似内容,则可以按字典顺序对它们进行比较 - 但您当前的格式并非设计用于排序。

可以编写一个IComparer<string>,每次都进行解析,但你最好只是尽早解析这些值,并让它们保持更多本地表示(DateTime)尽可能长。

答案 1 :(得分:0)

您将Timestampsstring进行比较。只需将<>DateTime.Parse()

一起使用即可
value timea = DateTime.Parse(timeA);
value timeb = DateTime.Parse(timeB);

if( timeA > timeB )
{
  // your code...
}

答案 2 :(得分:0)

有关

string.Compare(timeA, timeB) 

工作,timeAtimeB必须是字符串。并且字符串按字母顺序进行比较,因此以1开头的字符串,如 '12 / 27/2012'将始终小于以2开头的字符串,如'2/27 / 2010'

为了比较日期,您可以使用:

DateTime.Compare(timeA, timeB) 

其中timeAtimeBDateTime。如果您说,它们都是在代码中生成的,请避免在其上使用.ToString()

答案 3 :(得分:0)

String.Compare(string strA, string strB);

返回:         //一个32位有符号整数,表示之间的词汇关系         //两个comparands.Value条件小于零的strA小于strB。零         // strA等于strB。大于零的strA大于strB。