2つの日付があります。トリミング後に2つの文字列値を比較します
ReleaseDates = "11/2/2016";
LiveDate = "11/02/2016";
上記の2つの日付は同じです。しかし私の下のコーディングではFALSEを返します。
if (ReleaseDates.Contains(LiveDate.TrimStart(new Char[] { '0' })))
{
}
2つの日付があります。トリミング後に2つの文字列値を比較します
ReleaseDates = "11/2/2016";
LiveDate = "11/02/2016";
上記の2つの日付は同じです。しかし私の下のコーディングではFALSEを返します。
if (ReleaseDates.Contains(LiveDate.TrimStart(new Char[] { '0' })))
{
}
これは、日付を比較していないため、同じでない2つの文字列を比較しているためです。あなたのベストショットは、最初に解析してから比較することです。
DateTime releaseDate = DateTime.Parse(ReleaseDates);
DateTime liveDate = DateTime.Parse(LiveDate);
if (releaseDate == liveDate) // This should be true.
{
// Do stuff.
}
とにかく、なぜ文字列を日付に使うのですか? – JCabello
TrimStart
は、文字列の先頭で文字を除去するのであなたのコードは動作しません。 LiveDate
の冒頭にゼロがないようです。トリミングする文字'0'
は、他の文字の前にインデックス3があります。だからこそ刈り取られていないのです。
日付を表す文字列を比較すると、エラーが発生しやすくなります。両方の文字列を解析し、結果をDateTime
オブジェクトと比較する方がよいでしょう。
一般的に、日付を表すオブジェクトとして日付を保持する必要があります(例:DateTime
またはDateTimeOffset
)。これにより、日付表示を表示目的にカスタマイズし、日付形式がmm/ddからdd/mmに変わるときのエラーを避けることができます。
文字列の代わりに 'DateTime'を使用できますか?' DateTime'を解析すると、それは簡単です –
おそらく、日付として解析して比較したいのですか? – Andrei
値のうちの1つは '11/2/2016'で、もう1つは' 11/02/2016'です。あなたの考え方はうまくいかないかもしれません。文字列の先頭から '0'を削除します。たとえば、' 011/2/2016'なら '11/2/2016'になります。 –