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