0

次の場合、使用するstring.Compare(timeA,TimeB)と常に -1 が返されます。

timeA以前に発生したタイムスタンプですtimeB

両方ともこの形式です: 12/27/2012 00:59:06aka mm/dd/yyyy hh:mm:ssviaDateTime.UtcNow

4

4 に答える 4

5

はい、そうです。なぜそれがうまくいくと期待するのですか?timeで並べ替えたい場合は、両方を値に解析してDateTime比較します。それらを文字列として比較しているので、辞書順に比較されます。もちろん、タイムスタンプ形式がyyyy-MM-ddTHH:mm:ssまたは類似のものである場合、それらを辞書的に比較できますが、現在の形式は並べ替え用に設計されていません。

毎回解析を行う を作成することもできますが、できるだけ早く値を解析し、よりネイティブな表現 ( ) でできるだけ長く保持する方がはるかに優れています。IComparer<string>DateTime

于 2012-12-26T12:14:04.153 に答える
0

Timestampsとして比較していますstring。を使用するだけ<>DateTime.Parse()

value timea = DateTime.Parse(timeA);
value timeb = DateTime.Parse(timeB);

if( timeA > timeB )
{
  // your code...
}
于 2012-12-26T12:17:25.490 に答える
0

為に

string.Compare(timeA, timeB) 

文字列でなければなりませんtimeAtimeBまた、文字列はアルファベット順に比較されるため、'12/27/2012' のように 1 で始まる文字列は、'2/27/2010 'のように 2 で始まる文字列よりも常に小さくなります。

日付を比較するには、次を使用できます。

DateTime.Compare(timeA, timeB) 

timeAtimeBですDateTime。あなたが言うように、それらが両方ともコードで生成されている場合は、それらに a を使用しない.ToString()でください。

于 2012-12-26T12:17:37.690 に答える
0
String.Compare(string strA, string strB);

戻り値: // 2 つの比較演算子間の字句関係を示す 32 ビットの符号付き整数 // 値 条件 0 未満 strA は strB より小さい。ゼロ // strA は strB に等しい。ゼロより大きい strA は strB より大きい。

于 2012-12-26T12:17:51.900 に答える