使用 string.Compare(timeA,TimeB)
总是返回 -1,因为:
timeA
是发生在timeB
之前的时间戳
和
两者都采用以下格式:12/27/2012 00:59:06
又名mm/dd/yyyy hh:mm:ss
通过DateTime.UtcNow
是的。你为什么期望它有效?如果要按时间排序,请将它们解析为DateTime
值并进行比较。您将它们作为字符串进行比较,以便按字典顺序比较它们。当然,如果您的时间戳格式是yyyy-MM-ddTHH:mm:ss
或类似的东西,您可以按字典顺序比较它们 - 但您当前的格式不是为排序而设计的。
你可以写一个每次都做解析的IComparer<string>
,但你最好尽早解析值,并尽可能长时间地将它们保留在更原生的表示形式(DateTime
(中。
您正在将您的Timestamps
作为string
进行比较。只需使用<
,即可>
DateTime.Parse()
value timea = DateTime.Parse(timeA);
value timeb = DateTime.Parse(timeB);
if( timeA > timeB )
{
// your code...
}
for
string.Compare(timeA, timeB)
要工作,timeA
和timeB
必须是字符串。字符串按字母顺序进行比较,因此以 1 开头的字符串(如"12/27/2012"(将始终小于以 2 开头的字符串(如"2/27/2010"。
为了比较日期,您可以使用:
DateTime.Compare(timeA, timeB)
其中timeA
和timeB
DateTime
的。如果如您所说,它们都是在您的代码中生成的,请避免对它们使用.ToString()
。
String.Compare(string strA, string strB);
返回: 一个 32 位有符号整数,指示 两个比较。值条件 小于零 strA 小于 strB。零 strA 等于 strB。大于零 strA 大于 strB。