验证 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:mm
对 2014-11-01T12:00-12:00
给出 true 但对 2014-11-01T12:00-03:00
给出 false。在那些中,我认为您期望使用 hh
和 mm
作为偏移量,但这些将被解释为时间的小时和分钟,而不是偏移量。这些对您要实现的目标没有帮助,因此请删除它们。
我在 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:mm
对 2014-11-01T12:00-12:00
给出 true 但对 2014-11-01T12:00-03:00
给出 false。在那些中,我认为您期望使用 hh
和 mm
作为偏移量,但这些将被解释为时间的小时和分钟,而不是偏移量。这些对您要实现的目标没有帮助,因此请删除它们。