Дата Firebird не может быть проанализирована - PullRequest
0 голосов
/ 09 февраля 2012

У меня есть база данных Firebird, в некоторых таблицах есть метка времени. Например, моя база данных возвращает такие даты: «04.01.2012 15:08:44» или «20.12.2011 16:38:02». Я использую TryParseExact и код выглядит следующим образом:

DateTime.TryParseExact(results[i][1], "M/d/yyyy h:mm:ss tt", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt)

Я пробовал много форматов, таких как "MM / dd / гггг чч: мм: сс тт", но ни один из них не работал Пожалуйста, помогите мне, или я сойду с ума на этот раз ...

1 Ответ

0 голосов
/ 09 февраля 2012

Посмотрите на эту статью

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

Ключевая часть, на которую стоит обратить внимание:

// Parse date-only value without leading zero in month using "d" format.
// Should throw a FormatException because standard short date pattern of 
// invariant culture requires two-digit month.
dateString = "6/15/2008";
try {
   result = DateTime.ParseExact(dateString, format, provider);
   Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
}
catch (FormatException) {
   Console.WriteLine("{0} is not in the correct format.", dateString);
}

Возможно, ваша база данных не возвращает стандартный шаблон. Мне кажется глупым, что это бросило бы исключение все же. И в примере он говорит только значение «только для даты», а ваше - нет.

Если у вас есть дата в строке, вы можете выполнить старое ручное исправление:

public static string FixDate(string date)
{
    return (date.IndexOf('/') == 1) ? "0" + date : date;
}
...