Как я могу отформатировать строку `00: 00: 30: 00` в TimeSpan? - PullRequest
2 голосов
/ 25 декабря 2010

Я получаю дату и время от системы автоматизации, как это: 00:00:30:00.

Когда я пытаюсь разобрать его на TimeSpan, я получаю эту ошибку:

Входная строка была в неправильном формате.

Какой формат может помочь мне преобразовать это в TimeSpan?

Ответы [ 2 ]

7 голосов
/ 25 декабря 2010

Вы можете использовать пользовательскую строку формата TimeSpan вместе с методами ParseExact:

TimeSpan ts = TimeSpan.ParseExact("00:00:30:00", 
                                  "hh:mm:ss:ff", 
                                  CultureInfo.InvariantCulture)

Если вы не хотите рисковать возможнымиисключение форматирования, вы можете использовать методы TryParseExact - для этого требуется параметр out и возвращается логическое значение, указывающее, успешно ли выполнен анализ или нет.

2 голосов
/ 25 декабря 2010

Достойный разбор TimeSpan доступен только в .NET 4.0. Для более ранней версии вы можете перехватить методы синтаксического анализа DateTime, преобразовав дату в интервал времени с помощью свойства Ticks. Как это:

    public static bool TryParseTime(string txt, string fmt, out TimeSpan ts) {
        DateTime dt;
        bool ok = DateTime.TryParseExact(txt, fmt, null, 
            System.Globalization.DateTimeStyles.NoCurrentDateDefault, out dt);
        ts = new TimeSpan(ok ? dt.Ticks : 0);
        return ok;
    }

Требуется дополнительная работа, когда вам нужно проанализировать отрицательные промежутки времени.

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