C # проверить шаблон даты и времени - PullRequest
0 голосов
/ 10 октября 2018

Мне нужно получить свойство datetime через веб-сервис, которое имеет два возможных формата:

2018-05-14T12:20:45:123+02:00

2018-05-14T12:20:45:123Z

Как я могу запросить переменную datetime, если шаблон тот или иной?

yyyy-MM-ddTHH:mm:ss.fffzzz

yyyy-MM-ddTHH:mm:ss.fffZ

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

DateTime не имеет никакого формата.Формат, который вы называете "формат строкового представления DateTime" .

Вы можете проанализировать оба значения с помощью DateTime.Parse() или DateTime.TryParse() - они будут работать для обоих.

DateTime.Parse("2018-05-14T12:20:45.123+02:00") // [14.05.2018 15:20:45]
DateTime.Parse("2018-05-14T12:20:45.123Z")      // [14.05.2018 15:20:45]

Чтобы определить, какой формат вы получаете от веб-службы:

if (responseDateTimeString.EndsWith("Z"))
    // it's '2018-05-14T12:20:45.123Z' format
else
    // it's not '2018-05-14T12:20:45.123Z' format (it's '2018-05-14T12:20:45.123+02:00')
0 голосов
/ 10 октября 2018

Вы можете использовать TryParseExact, который будет возвращать bool - true, если анализ завершится успешно, иначе false:

bool isPattern1 = DateTime.TryParseExact("yourdate string", "yyyy-MM-ddTHH:mm:ss.fffzzz", CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime result1);
bool isPattern2 = DateTime.TryParseExact("yourdate string", "yyyy-MM-ddTHH:mm:ss.fffZ", CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime result2);

if(isPattern1)
{
    //your code
}

if(isPattern2)
{
    //your code
}

ИЛИ вы можете использовать вторую перегрузку с string[] в качестве параметра форматов, есливам на самом деле не нужно проверять, какой шаблон работал, но вы должны быть уверены, что строка была из этих двух форматов:

var formats = new [] { "yyyy-MM-ddTHH:mm:ss.fffzzz", "yyyy-MM-ddTHH:mm:ss.fffZ" };

bool isParseSucceed = DateTime.TryParseExact("yourdate string", formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...