Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
382 views
in Technique[技术] by (71.8m points)

c# - Parse String DateTime containing TimeZone Info

I am trying to convert a string value to a datetime value but am getting a System.FormatException error. This is because of the timezone info which is part of the date string. Is there any method which will be able to handle this conversion?

string date = "Wed, 04 Jan 2012 20:18:00 EST";
DateTime dt = Convert.ToDateTime(date);
Console.WriteLine(dt.ToString());
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I don't believe there's any custom date and time format string which will parse or format a time zone abbreviation. You'll have to strip it out, parse the local part, work out which time zone is meant from the abbreviation (good luck with that - they're ambiguous) and then apply that time zone to the local time to get a UTC value (again, this can be ambiguous).

If you're in control of the format at all, I would try to avoid including time zone information if you can, or include an offset rather than a time zone if that's all that's important (an offset doesn't give the same information of course), or an unambiguous time zone identifier if you really need the time zone. Note that .NET uses the Windows system time zone identifiers; my own Noda Time project uses the more widespread Olson / zoneinfo / tz identifiers, if that's helpful to you.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...