如何将具有exception格式的字符串转换为datetime
我使用的是.NET 3.5,我的日期以字符串forms出现,格式如下:
1月20日星期二20:47:43 GMT 2009
第一个问题,该格式的名称是什么? 第二个问题,将此字符串转换为日期时间最简单,最清晰的方法是什么? 如果可能的话,我希望能够使用.net API / Helper方法。
编辑:我忘了提到我已经尝试过使用DateTime.Parse和Convert.ToDateTime。 这些都没有奏效。
您可以将DateTime.TryParseExact()方法与合适的格式字符串一起使用。 看到这里
编辑:尝试这样的事情:
DateTime dt; System.Globalization.CultureInfo enUS = new System.Globalization.CultureInfo("en-US"); if ( DateTime.TryParseExact( "Tue Jan 20 20:47:43 GMT 2009", "ddd MMM dd H:mm:ss "GMT" yyyy", enUS, System.Globalization.DateTimeStyles.NoCurrentDateDefault , out dt )) { Console.WriteLine(dt.ToString() ); }
你去吧
DateTime d = DateTime.ParseExact("Tue Jan 20 20:47:43 GMT 2009".Replace("GMT", "+00"), "ddd MMM dd H:mm:ss zz yyyy", new CultureInfo("en-US"));
DateTime API及其文档非常糟糕。 例外只会告诉您“字符串未被识别为有效的DateTime”,这实际上没有帮助。 它必须自己弄清楚日期格式说明符,因为我没有在MSDN中找到它们。
我想,“en-US”语言环境是必要的,因为您的日期格式使用英语缩写,如“Tue”。
无论如何,我无法告诉你日期格式是什么。 它非常相似,但不等于HTTP使用的格式(例如, If-Modified-Since: Wed, 08 Dec 2004 13:25:25 GMT
)。
DateTime dt; if(DateTime.TryParse("Tue Jan 20 20:47:43 GMT 2009", out dt)){ /* Yay.. it's valid */ }
您还可以使用TryParseExact
来指定DateTime的格式
使用TryparseExact
const string FORMAT = "ddd MMM dd HH:mm:ss "GMT" yyyy"; if (DateTime.TryParseExact("Tue Jan 20 20:47:43 GMT 2009", FORMAT, CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AssumeUniversal, out dt)) { /* is valid */ }
我相信这应该有效。 不确定它是否会尝试解析GMT。
您可以使用Convert.ToDateTime
尝试做一个DateTime.Parse(“Tue Jan 20 20:47:43 GMT 2009”),看看它是否接受了它。
这是自定义DateTime格式的一个很好的链接。
https://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx
我希望有所帮助。
试试这个:
DateTime.TryParse(Tue Jan 20 20:47:43 GMT 2009", out objDt);
您需要提供输出值。 使用If和if返回true,然后是有效日期。
HTH
CultureInfo enUS = new CultureInfo( "en-US" ); DateTime dt = DateTime.ParseExact( "Tue Jan 20 19:47:43 GMT 2009", "ddd MMM dd HH:mm:ss 'GMT' yyyy", enUS, DateTimeStyles.None ); Console.WriteLine( dt.ToString() );
您可以使用DateTime.ParseExact或DateTimeOffset.ParseExact指定日期字符串的格式。
虽然,我无法快速弄清楚如何匹配时区说明符(即GMT)。 看一下谷歌的一些结果,表明大多数试图解决这个问题的人正在尝试这样做 – 制作所有时区和偏移的列表然后解析字符串并用+/-偏移替换时区说明符,或其他一些hackish方法。 虽然这些解决方案都不是来自StackOverflow,但谁知道它们有多好。
这是我写的一个简短示例,其中“GMT”从试图转换的日期字符串中删除。 如果您可以使用偏移替换时区,请将“zzz”添加到格式字符串中。 对于解析其他格式,inheritanceMSDN页面自定义日期和时间格式字符串列出所有格式 。
上述就是C#学习教程:如何将具有exception格式的字符串转换为datetime分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
// Parse date and time with custom specifier. string dateString = "Tue Jan 20 20:47:43 2009"; string format = "ddd MMM dd HH:mm:ss yyyy"; DateTime result; System.Globalization.CultureInfo provider = System.Globalization.CultureInfo.InvariantCulture; try { result = DateTime.ParseExact(dateString, format, provider); Console.WriteLine("{0} converts to {1}.", dateString, result.ToString()); } catch (FormatException) { Console.WriteLine("{0} is not in the correct format.", dateString); }
DateTime.Parse("Tue Jan 20 20:47:43 GMT 2009")
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1004488.html