0

XMLファイルから取得したDatetimeオブジェクトがあります(closingDate)。

すべての終了日をユーザーに動的に表示したい。ただし、XML ファイル内のすべてのオブジェクトに必ずしも dateobject が含まれているわけではありません。

これを行うにはどうすればよいですか (疑似コード):

DateTime closingDate = DateTime.Parse(xmlFile.selectSingleNode("Closing_Date")).toString();

その後、次のように HTML ファイルを書き出しています。

    String fileListHTML += "<li><a href='#'>The file name gets put here</a> (Closed:
"+closingDate+")</li>";

現在、datetime がある限り、問題はありません。ただし、datetime オブジェクトがない場合 (null など)、エラーが発生します。

どうにかしてifステートメントを実行できますか(これも疑似):

if (closingDate =="")
{
   closingDate = "To be determined";
}

もちろん、日時を文字列にキャストすることに関するエラーが発生しています。これを行う方法はありますか?

4

2 に答える 2

1

私は、必要になるまでDateTimes をstrings に変えるのは好きではありません。

null 許容の DateTime を使用できます。設定されていない、または解析可能でないことを示すには、null を使用します。または、nullable アプローチをスクラッチして、DateTime.MinValue代わりになどのセンチネルを使用します。

これはテストされていませんが、要点を理解する必要があります。

DateTime? closingDate;

if (!string.IsNullOrEmpty(myClosingDateString))
{
    closingDate = DateTime.Parse(myClosingDateString);
}

// do whatever else you need

// when it comes time to appending ...

if (!closingDate.HasValue) // or check if it's `DateTime.MinValue`
{
    fileListHtml += "No closing date";
}
else
{
    fileListHtml += closingDate.Value.ToString();
}

タイム ゾーンや国際化を考慮せずに文字列に変換する場合は注意が必要ですDateTime(たとえば、DateTime.Parse()地域の設定や渡す文化によって、日付の解釈が大きく異なる場合があります)。

簡単にするために、文字列の形式を制御できる場合は、UTC と ISO 8601 形式を使用することをお勧めします。

于 2012-05-25T02:47:49.953 に答える
1

代わりに DateTime.TryParse を使用してください。これがどのように機能するかを示すサンプル コードを次に示します。

DateTime res;
if ( DateTime.TryParse(str,out res))
{
   // Res contain the parsed date and you can do whatever you want with
}
else
{
  // str is not a valid date
}

http://msdn.microsoft.com/fr-fr/library/ch92fbc1.aspx

于 2012-05-25T02:30:47.770 に答える