与.NET约会的最佳方式?

时间:2011-02-10 20:28:02

标签: c# asp.net parsing date

我从我的页面回来了一个字符串,我想确定它是一个约会。这是我到目前为止(它的工作原理),我只是想知道这是否是“最好”的方法。我正在使用.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; }
}

5 个答案:

答案 0 :(得分:13)

使用Parse结构中定义的DateTime方法之一。

如果字符串不可解析,这些将抛出异常,因此您可能希望使用其中一种TryParse方法(不是很漂亮 - 它们需要out参数,但更安全):

DateTime myDate;
if(DateTime.TryParse(dateString, 
                  CultureInfo.InvariantCulture, 
                  DateTimeStyles.None, 
                  out myDate))
{
   // Use myDate here, since it parsed successfully
}

如果您知道传入日期的确切格式,可以尝试使用带有日期和时间格式字符串的ParseExactTryParseExactstandardcustom )当试图解析日期字符串时。

答案 1 :(得分:2)

DateTime.TryParseDateTime.TryParseExact怎么样?

第一个使用当前的文化日期格式。

答案 2 :(得分:1)

.NET为我们提供了datetime.parse

http://msdn.microsoft.com/en-us/library/1k1skd40.aspx

datetime.tryparse

http://msdn.microsoft.com/en-us/library/ch92fbc1.aspx

这两种方法都是从字符串中解析日期的好方法

答案 3 :(得分:0)

对于网址: using日期iso格式(YYYYMMDD

转换:

datetime.TryParse as suggested above

答案 4 :(得分: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;
        }
    }