我需要允许接受 UTC 日期时间:http ://www.w3.org/TR/NOTE-datetime
如:
- Year:
YYYY (eg 1997) Year and month:
YYYY-MM (eg 1997-07) Complete date:
YYYY-MM-DD (eg 1997-07-16) Complete date plus hours and minutes:
YYYY-MM-DDThh:mmTZD (eg 1997-07-16T19:20+01:00) Complete date plus hours, minutes and seconds:
YYYY-MM-DDThh:mm:ssTZD (eg 1997-07-16T19:20:30+01:00) Complete date plus hours, minutes, seconds and a decimal fraction of
a second
YYYY-MM-DDThh:mm:ss.sTZD (eg 1997-07-16T19:20:30.45+01:00) where:
YYYY = four-digit year
MM = two-digit month (01=January, etc.)
DD = two-digit day of month (01 through 31)
hh = two digits of hour (00 through 23) (am/pm NOT allowed)
mm = two digits of minute (00 through 59)
ss = two digits of second (00 through 59)
s = one or more digits representing a decimal fraction of a second
TZD = time zone designator (Z or +hh:mm or -hh:mm)
如何将字符串转换为具有特定格式的 DateTime?
我写了下面的代码:
private const string Format = "YYYY-MM-DDThh:mm:ssZ";
public DateTime? Parse(string modifiedSince)
{
// how to know whether it's a valid DateTime in UTC format?
}
但它总是返回 null,这意味着它无法解析为 DateTime。
它应该成功验证低于 UTC 值,但它没有:
2013-05-10
2013-05-10T05:04:10
2013-05-10T05:04:10.40
013-05-10T05:04:10.4Z
(Z 通常是可选的)
如何使用 DateTime.Parse 或 .Parsexact 以便成功返回上述格式的日期?
所有其他日期格式都应该失败,例如 20130510
我可以写一个正则表达式吗?