Проанализируйте DateTime в c# от странного формата

если у меня есть строка даты и времени в странном формате, такой как YYYY##MM##DD HH**M**SS, как я могу заложить новую основу объекта даты и времени на этом? я считал что-то о datetimeformatinfoclass, но не уверенный, как получить его работа..

15
задан Matthew Flaschen 10 February 2010 в 07:32
поделиться

2 ответа

Моя команда уже некоторое время использует JBehave . Для хранения спецификаций используются обычные текстовые файлы. Каждый шаг (Given, When, Then) затем выполняется определенным методом, который может извлечь параметры из шага. Сценарии могут иметь отступы и хорошо отформатированы, что очень помогает, если клиенты хотят их проверить.

Есть и некоторые проблемы. Мы перешли на Java 6. Иногда некоторые шаги сценария игнорируются во время выполнения. Это может вызвать много проблем, выясняя, где ошибка.

-121--2512633-

Можно использовать метод DateTime.ParseExact и передать требуемый формат.

-121--2383235-

Можно использовать 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 исправляет эту ситуацию, и я надеюсь, что он сделает разбор и форматирование намного быстрее - но на данный момент он далеко не готов к производству.

27
ответ дан 1 December 2019 в 01:38
поделиться

Вы можете использовать метод DateTime.ParseExact и передать нужный вам формат.

7
ответ дан 1 December 2019 в 01:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: