как бороться с неожиданным форматом даты и времени? - PullRequest
2 голосов
/ 15 октября 2010

я получаю дату и время из текстового файла - в мою строку var в моей программе на C #.

Мне нужно преобразовать эту строку в переменную datetime.

как это сделать, если я получу неожиданный тип даты и времени?

и если я не знаю тип региона на главном компьютере (когда я распространю свою программу)?

Спасибо заранее

Ответы [ 5 ]

2 голосов
/ 15 октября 2010

Используйте TryParse, который будет возвращать логическое выражение, если дата действительна или нет.

    string dateString = "03/01/2009 10:00 AM";
    CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US");
    DateTimeStyles styles DateTimeStyles.None;
    DateTime dateResult;

    if(DateTime.TryParse(dateString, culture, styles, out dateResult))
    {
        do something with dateResult
    }

TryParse docs

1 голос
/ 12 декабря 2010

Будьте осторожны, 3/3/2010 неоднозначно может быть мм / дд / гггг или дд / мм / гггг.Если вы используете пример скайфута, вы можете получить правильную дату, но не правильную!

0 голосов
/ 16 октября 2010

Если вы применяете определенный формат даты / времени, попробуйте использовать DateTime.ParseExact.

0 голосов
/ 15 октября 2010

DateTime.Parse() использует настройки культуры с ПК, на котором запущено приложение.Это означает, что пользователь может вводить форматы даты своей культуры.

Если вы не хотите, чтобы этот способ указывал Инвариантная культура при синтаксическом анализе, то всегда принимаются настройки английской культуры.

0 голосов
/ 15 октября 2010

TryParse - это то, что вы хотите.

DateTime result;

if(!DateTime.TryParse(unpredictableDate, out result))
{
    throw new ArgumentException("Argument '" + unpredictableDate + "' was not a recognizable date format.");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...