если у меня есть строка даты и времени в странном формате, такой как YYYY##MM##DD HH**M**SS
, как я могу заложить новую основу объекта даты и времени на этом? я считал что-то о datetimeformatinfoclass, но не уверенный, как получить его работа..
Моя команда уже некоторое время использует 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 исправляет эту ситуацию, и я надеюсь, что он сделает разбор и форматирование намного быстрее - но на данный момент он далеко не готов к производству.
Вы можете использовать метод DateTime.ParseExact и передать нужный вам формат.