首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >解析字符串日期(包括EEST)但失败

解析字符串日期(包括EEST)但失败
EN

Stack Overflow用户
提问于 2019-03-21 23:07:13
回答 1查看 162关注 0票数 0

我试图将一个字符串解析成一个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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55283540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档