Проверьте, находится ли строка в определенном формате даты - PullRequest
0 голосов
/ 30 июня 2018

Привет, я получаю строку с форматом даты гггг-ММ-дд , но я хочу сравнить ее с форматом дд-ММ-гггг , если это не то же самое, конечно нет, я хочу конвертировать, проблема для меня это не конвертировать, это сравнить оба формата ... так что я представляю, может быть, что-то вроде этого

var dt = obj.date; //this a string

if (dt.formatDateorsomethingIguess == "dd/MM/yyyy") //this is the part I'm asking for
{
     usedt(dt);
} 
else 
{
    DateTime dt_format = DateTime.ParseExact(dt.Trim(), "dd-MM-yyyy",
    System.Globalization.CultureInfo.InvariantCulture);
    usedt(dt_format);
}

Ответы [ 2 ]

0 голосов
/ 30 июня 2018

Вы пытались увидеть что-то вроде регулярного выражения?

я нашел это> (([1-2] [0-9]) | ([1-9]) | (3 [0-1])) / ((1 [0-2]) | ([1-9])) / [0-9] {4}

соответствует 21/03/1995

0 голосов
/ 30 июня 2018

Вы можете решить эту проблему парой звонков на TryParseExact :

public static DateTime ParseDate(string input)
{
    DateTime result;

    if (DateTime.TryParseExact(input, "yyyy-MM-dd", CultureInfo.CurrentCulture, DateTimeStyles.None, out result)) return result;
    if (DateTime.TryParseExact(input, "dd-MM-yyyy", CultureInfo.CurrentCulture, DateTimeStyles.None, out result)) return result;

    throw new FormatException();
}

Проведите быструю проверку:

public static void Main()
{
    string[] tests = new string[] { "2018-06-29", "29-06-2018","Invalid" };

    foreach (var t in tests)
    {
        var result = ParseDate(t);
        Console.WriteLine( "Year: {0}  Month: {1}  Day: {2}", result.Year, result.Month, result.Day );
    }
}

Выход:

Year: 2018  Month: 6  Day: 29
Year: 2018  Month: 6  Day: 29
Run-time exception (line 18): One of the identified items was in an invalid format.

Пример кода на DotNetFiddle

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