Лучший способ получить свидание с .NET? - PullRequest
11 голосов
/ 10 февраля 2011

Я возвращаю строку со своей страницы и хочу убедиться, что это дата.Это то, что я имею до сих пор (это работает), и я просто хочу знать, является ли это «лучшим» способом сделать это.Я использую .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 ]

13 голосов
/ 10 февраля 2011

Используйте один из Parse методов, определенных в структуре DateTime.

Они вызовут исключение, если строка не будет разбираться, поэтому вы можете использовать один из *Вместо 1006 * методов (не так красиво - они требуют параметра out, но они безопаснее):

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

Если вы знаете точный формат переданной даты, вы можете попробовать использовать ParseExact или TryParseExact, которые принимают строки формата даты и времени ( стандарт или custom ) при попытке анализа строки даты.

2 голосов
/ 10 февраля 2011

Как насчет DateTime.TryParse и DateTime.TryParseExact ?

Первый использует текущий формат даты культур.

1 голос
/ 10 февраля 2011

.NET дает нам datetime.parse

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

и datetime.tryparse

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

, которые оба являютсяхороший способ разобрать даты из строк

0 голосов
/ 11 февраля 2011

Я бы просто попытался разобрать строку ввода:

    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;
        }
    }
0 голосов
/ 10 февраля 2011

Для URL: с использованием дата изоформат (YYYYMMDD)

Для преобразования:

datetime.TryParse as suggested above
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...