Если у меня есть строка datetime в странном формате, например YYYY##MM##DD HH**M**SS
, как я могу создать новую базу данных datetime? я кое-что прочитал о datetimeformatinfoclass, но не уверен, как заставить его работать.
Parse DateTime в С# из странного формата
Ответ 1
Вы можете использовать DateTime.ParseExact или DateTime.TryParseExact для данных, в которых вы не уверены. Например:
using System;
class Test
{
static void Main()
{
string formatString = "yyyy'##'MM'##'dd' 'HH'*'mm'*'ss";
string sampleData = "2010##02##10 07*22*15";
Console.WriteLine(DateTime.ParseExact(sampleData,
formatString,
null));
}
}
Кавычки в строке формата не являются строго необходимыми - это тоже будет работать:
string formatString = "yyyy##MM##dd HH*mm*ss";
Однако использование кавычек означает, что вы явно указываете, что символы между кавычками должны использоваться буквально и не пониматься как шаблонные символы - поэтому, если вы изменили "#" на "/", версия с использованием котировок определенно используйте "/", в то время как версия без использования значения конкретной культуры.
null
в вызове ParseExact
означает "использовать текущую культуру" - в этом случае вряд ли это имеет большое значение, но общедоступной альтернативой является CultureInfo.InvariantCulture
.
Несчастливо, что нет способа заставить BCL проанализировать строку формата и сохранить информацию; мой собственный проект Noda Time исправляет эту ситуацию, и я надеюсь, что это сделает разбор и форматирование намного быстрее - но это далеко не так, готовый в данный момент.
Ответ 2
Вы можете использовать DateTime.ParseExact и передать необходимый вам формат.