验证 Facebook 日期时间字符串

Validate Facebook DateTime String

我在 C# 验证 Graph 的日期时间字符串时遇到了一些问题。 facebook API 文档显示:

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 次都失败了。

有什么想法吗?

那个时间 -0300 的偏移部分将被 zzz 解析,而不是 Z。检查 .Net Reference 可用的格式说明符。

yyyy-MM-ddThh:mmzzz 将解析您显示的日期 2014-11-01T12:00-0300

数组中的前 4 种格式只会在偏移量与时间匹配时解析日期。例如。 yyyy-MM-ddThh:mm-hh:mm2014-11-01T12:00-12:00 给出 true 但对 2014-11-01T12:00-03:00 给出 false。在那些中,我认为您期望使用 hhmm 作为偏移量,但这些将被解释为时间的小时和分钟,而不是偏移量。这些对您要实现的目标没有帮助,因此请删除它们。