我试图将一个字符串解析成一个DateTime
,但它失败了并显示了一个异常。代码如下:
static void Main(string[] args)
{
string dt = "Wed Sep 05 00:00:00 EEST 2012";
string Fm = "EEE MMM dd HH:mm:ss zzz yyyy";
DateTime dateTime;
dateTime = DateTime.ParseExact(dt, Fm, CultureInfo.InvariantCulture);
Console.WriteLine(dateTime.Date);
}
这是一个例外:
Unhandled Exception: System.FormatException: String was not recognized as a valid DateTime.
at System.DateTime.ParseExact(String s, String format, IFormatProvider provider)
at DateParser.Program.Main(String[] args) in C:\Users\AhmedSaeed\source\repos\DateParser\DateParser\Program.cs:line 17
发布于 2019-03-22 03:13:05
DateTime
结构不保留时区信息。它只有日期和时间值,这些值是基于名为Ticks
的长整型的。这就是为什么没有与该缩写匹配的custom date and time format string的原因。zzz
format specifier用于本地操作系统时区与UTC的带符号偏移量,并不意味着如文档中所述与DateTime
解析一起使用它。
如果要解析字符串中的缩写,则必须将其作为字符串文字进行转义。除此之外,没有任何方法可以解析它。另一方面,时区缩写甚至不是唯一的。例如,CST可以表示中部标准时间、中国标准时间或Cuba标准时间。
此外,也没有EEE
自定义日期格式说明符。相反,缩写的日期名称与ddd
format specifier匹配。
string dt = "Wed Sep 05 00:00:00 EEST 2012";
string Fm = "ddd MMM dd HH:mm:ss 'EEST' yyyy";
DateTime dateTime = DateTime.ParseExact(dt, Fm, CultureInfo.InvariantCulture);
Console.WriteLine(dateTime.Date);
这里有一个demonstration
。
https://stackoverflow.com/questions/55283540
复制相似问题