Подтвердите строку даты в Facebook

У меня возникли некоторые проблемы в C#, проверяющие строки даты и времени для Graph. Документация API Facebook показывает:

2014-11-01T12:00-0300

как формат даты и времени. Независимо от того, что я пытаюсь (даже думая, что они могли пропустить ":" на смещении), это не проходит. Мой код ниже:

public bool validateDateTimeISO8601(string s)
        {
            // you may want to add a few more formats here
            var formats = new[] { "yyyy-MM-ddThh:mm-hh",
                      "yyyy-MM-ddThh:mm-hh:mm",
                      "yyyy-MM-ddThh:mm+hh",
                      "yyyy-MM-ddThh:mm+hh:mm",
                      "yyyy-MM-ddThh:mmZ",
                      "yyyy-MM-ddThh:mm:ssZ" };

            DateTime dt;
            if (DateTime.TryParseExact(s, formats,
                                       CultureInfo.InvariantCulture, // ISO is invariant
                                       DateTimeStyles.RoundtripKind, // this is important
                                       out dt))
                return true;

            return false;
        }

В моем массиве форматов 6 форматов. Последние 2 паса, но первые 4 проваливаются, что бы я ни бросал в них.

Есть идеи?

1 ответ

Решение

Смещенная часть за это время -0300 будет проанализирован zzzне Z, Проверьте .Net Reference на наличие доступных спецификаторов формата.

yyyy-MM-ddThh:mmzzz разберу дату 2014-11-01T12:00-0300 который вы показали.

Первые 4 формата в вашем массиве будут анализировать даты только тогда, когда смещение соответствует времени. Например. yyyy-MM-ddThh:mm-hh:mm даст правду для 2014-11-01T12:00-12:00 но ложно для 2014-11-01T12:00-03:00, В тех, я думаю, вы ожидаете использовать hh а также mm для смещения, но они будут интерпретироваться как часы и минуты времени, а не смещение. Это не помогает тому, чего вы пытаетесь достичь, поэтому удалите их.

Другие вопросы по тегам