0

我有一个从 XML 文件(closeDate)中获取的 Datetime 对象。

我想向用户动态显示所有关闭日期。但是,并非 XML 文件中的所有对象都必须包含日期对象。

我该怎么做(伪代码):

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 对象(即:null),则会出现错误。

我可以以某种方式做一个 if 语句来说(再次,伪):

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

当然,我在将日期时间转换为字符串时遇到错误。有没有办法做到这一点?

4

2 回答 2

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 回答
1

除非有必要,否则我不喜欢将DateTimes 转为s。string

您可以使用可为空的日期时间。使用 null 表示它未设置或不可解析。或者从可空方法开始,并使用诸如此类的哨兵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 回答