実際の年の文字列を指定したときにDateTime.TryParseがfalseを返すのはなぜですか?
質問
以下のコードでは、関数にsTransactionDate =" 1999"を指定しています。そして、x / x / 1999の日付に変換しようとしています。
DateTime dTransactionDate = new DateTime();
if(DateTime.TryParse(sTransactionDate, out dTransactionDate))
{ //Happy
}else
{ //Sad
}
文字列が" 1999"の場合常に悲しい結果になります。アイデアはありますか?
解決
次のようなことを試してください( CultureInfo
および DateTimeStyles
を適切に調整します):
DateTime.TryParseExact
("1999",
"yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out dTransactionDate)
他のヒント
方法について...
DateTime dTransactionDate = new DateTime();
if (DateTime.TryParseExact(sTransactionDate, "yyyy",
CultureInfo.InvariantCulture, DateTimeStyles.None, out dTransactionDate))
{
// Happy
}
else
{
// Sad
}
...または単に...
DateTime dTransactionDate = new DateTime(int.Parse(sTransactionDate), 1, 1);
// Happy
" 1999"日付ではなく、1年です 1999年1月1日を試す
また、システムカレンダーで、解析しようとしている日付が存在することを確認します。 「1949年2月29日」と同じようにまた、カレンダーに存在しなかったためfalseを返します。
所属していません StackOverflow