如何解析日期从任何日期时间格式到dd / mm / yyyy?

时间:2011-10-01 17:48:34

标签: asp.net datetime format

我想将任何日期时间格式解析为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开始有一个未知单词

任何人指导我如何解析任何日期格式到一个? 任何帮助将不胜感激。

2 个答案:

答案 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',它应该可以工作。