我想将任何日期时间格式解析为dd / MM / yyyy格式。
这是我的代码
// dates i am providing are
// Sat, 01 Oct 2011 17:30:00 +0400
// and
// Sat, 01 October 2011 12:21:23 EST
Datetime dt = Convert.toDateTime(pubDate);
给了我以下异常
该字符串未被识别为有效的DateTime。从索引32开始有一个未知单词
任何人指导我如何解析任何日期格式到一个? 任何帮助将不胜感激。
答案 0 :(得分:2)
DateTime
不会以“格式”存储日期 - 它使用内部表示。您需要解析传入的字符串才能获得DateTime
的正确值,并且当您想显示时,您可以将其格式化为任意值显示。
最好的办法是使用TryParseExact
为其提供确切的格式字符串。您需要使用custom Date and Time format strings。
使用带有string[]
格式字符串的重载 - 每种日期格式一个。
关于EST
部分 - 框架不支持命名时区。您可能希望编写一个包装器,将命名时区转换为等效但可解析的形式。
未经测试(基于MSDN示例):
string[] formats= {"ddd, dd/MMM/yyyy hh:mm:ss K",
"ddd, dd MMMM yyyy hh:mm:ss EST"};
DateTime dateValue;
foreach (string dateString in dateStrings)
{
if (DateTime.TryParseExact(dateString, formats,
new CultureInfo("en-US"),
DateTimeStyles.None,
out dateValue))
Console.WriteLine("Converted '{0}' to {1}.", dateString, dateValue);
else
Console.WriteLine("Unable to convert '{0}' to a date.", dateString);
}
答案 1 :(得分:0)
从字符串中删除'EST',它应该可以工作。