Подтвердите строку даты в 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
для смещения, но они будут интерпретироваться как часы и минуты времени, а не смещение. Это не помогает тому, чего вы пытаетесь достичь, поэтому удалите их.