次の場合、使用するstring.Compare(timeA,TimeB)と常に -1 が返されます。
timeA以前に発生したタイムスタンプですtimeB
と
両方ともこの形式です: 12/27/2012 00:59:06aka mm/dd/yyyy hh:mm:ssviaDateTime.UtcNow
はい、そうです。なぜそれがうまくいくと期待するのですか?timeで並べ替えたい場合は、両方を値に解析して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...
}
為に
string.Compare(timeA, timeB)
文字列でなければなりませんtimeA。timeBまた、文字列はアルファベット順に比較されるため、'12/27/2012' のように 1 で始まる文字列は、'2/27/2010 'のように 2 で始まる文字列よりも常に小さくなります。
日付を比較するには、次を使用できます。
DateTime.Compare(timeA, timeB)
とtimeAはtimeBですDateTime。あなたが言うように、それらが両方ともコードで生成されている場合は、それらに a を使用しない.ToString()でください。
String.Compare(string strA, string strB);
戻り値: // 2 つの比較演算子間の字句関係を示す 32 ビットの符号付き整数 // 値 条件 0 未満 strA は strB より小さい。ゼロ // strA は strB に等しい。ゼロより大きい strA は strB より大きい。