按字符串进行 C# 时间戳比较.比较



使用 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) 

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

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

DateTime.Compare(timeA, timeB) 

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

String.Compare(string strA, string strB);

返回: 一个 32 位有符号整数,指示 两个比较。值条件 小于零 strA 小于 strB。零 strA 等于 strB。大于零 strA 大于 strB。

相关内容

  • 没有找到相关文章

最新更新