与.NET约会的最佳方式是什么?

11

我从页面中获取了一个字符串,并希望确保它是一个日期。这是我到目前为止的代码(它可以工作),但我想知道这是否是最好的方法。我正在使用 .NET 4。

int TheMonth =0;
int TheDay = 0;
int TheYear = 0;
DateTime NewDate;

var TheIncomingParam = Request.Params.Get("__EVENTARGUMENT").ToString();

char[] TheBreak = { '/' };
string[] TheOutput = TheIncomingParam.Split(TheBreak);

try { TheMonth = Convert.ToInt32(TheOutput[0]); }
catch { }

try { TheDay = Convert.ToInt32(TheOutput[1]); }
catch { }

try { TheYear = Convert.ToInt32(TheOutput[2]); }
catch { }

if (TheMonth!=0 && TheDay!=0 && TheYear!=0)
{
        try { NewDate = new DateTime(TheYear, TheMonth, TheDay); }
        catch { var NoDate = true; }
}

44
拥有一句好的搭讪台词。 - jerebear
你正在使用哪个版本的asp.net? - Vishal
11
开始先约她出去。 - Seva Alekseyev
8
  1. 有吸引力。
  2. 不要不吸引人。
  3. 要有钱。
- Christoffer Hammarström
1
@T.E.D. 或者也许不是,哈哈。他可能会因为标题而获得更多关注;-) - Josh
显示剩余2条评论
4个回答

13
使用在DateTime结构体中定义的一个Parse方法之一。
如果字符串无法解析,这些方法将抛出异常,因此您可能想改用其中一个TryParse方法(它们不太美观 - 它们需要一个输出参数,但更安全):
DateTime myDate;
if(DateTime.TryParse(dateString, 
                  CultureInfo.InvariantCulture, 
                  DateTimeStyles.None, 
                  out myDate))
{
   // Use myDate here, since it parsed successfully
}

如果您知道传入日期的确切格式,可以尝试使用ParseExactTryParseExact来解析日期字符串,这些方法接受日期和时间格式字符串(standardcustom)。

啊!它已经内置在框架中了!谢谢。顺便说一句,我让我的页面工作了:不是使用页面方法来发送参数,而是使用__doPostBack来实现的。 - frenchie
@frenchie - 很高兴听到您解决了问题... BCL 中内置了许多这样的好东西。花些时间阅读 MSDN 上的文档,你永远不知道会发现什么。 - Oded
是的,有很多内置的功能可以帮助你,但前提是你知道它们的存在。前几天我发现了扩展方法,这些真是太棒了! - frenchie

2

1

0
我会尝试使用TryParse函数来解析输入的字符串:
    private bool ParseDateString()
    {
        var theIncomingParam = Request.Params.Get("__EVENTARGUMENT").ToString(); 

        DateTime myDate;

        if (DateTime.TryParse(theIncomingParam, CultureInfo.InvariantCulture, DateTimeStyles.None, out myDate))
        {
            int TheMonth = myDate.Month;
            int TheDay = myDate.Day;
            int TheYear = myDate.Year;

            // TODO: further processing of the values just read

            return true;
        }
        else
        {
            return false;
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接