C#DateTime从yyyy-MM-ddTHH转换:mm:ss到dd MMM yyyy

如何将“yyyy-MM-ddTHH:mm:ss”转换为“dd MMM yyyy”格式? 对于Instance,我想将2013-04-16 05:30:05转换为2013年4月16日。实现此目的的正确方法是什么?

首先, DateTime没有格式。 但是如果你已经有一个表示格式为yyyy-MM-ddTHH:mm:ssDateTime的字符串,并且你想将它转换为格式为dd MMM yyyy的字符串日期,则需要先将其解析为DateTime

因此使用DateTime.ParseExact

 DateTime dt = DateTime.ParseExact("2013-04-16 05:30:05", "yyyy-MM-dd HH:mm:ss", null); 

现在您可以使用DateTime.ToString

 string result = dt.ToString("dd MMM yyyy"); 

请注意,如果要使用另一个DateTimeFormat进行解析而不是当前(fe force英文月份而不是德语: dt.ToString("dd MMM yyyy", CultureInfo.InvariantCulture) ),则需要将另一个CultureInfo对象传递给ParseExact / ToString

首先ParseExact然后执行ToString (我假设你有字符串对象,如果你有DateTime对象,跳过第一行)

 var dateTime = DateTime.ParseExact(yourDateString, "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture); var yourNewString = dateTime.ToString("dd MMM yyyy"); 

请注意,您在调试器中看到的DateTime表示取决于您当前的文化。

正如其他人提到的,DateTime没有格式。 要将字符串文字解析为Date,您需要调用DateTime.Parse(如果字符串是特定于区域性的格式)或DateTime.ParseExact,如果您需要传递格式字符串。

格式可以是自定义格式,如yyyy-MM-dd HH:mm:ss或标准格式字符串之一 ,例如。 s代表yyyy-MM-ddTHH:mm:ss

2013-04-16 05:30:05不是标准格式之一,所以你必须通过传递自定义格式字符串来解析:

  var dt = DateTime.ParseExact("2013-04-16 05:30:05", "yyyy-MM-dd HH:mm:ss", null); 

另一方面, yyyy-MM-ddTHH:mm:ss是标准格式,所以你可以写:

  var dt = DateTime.ParseExact("2013-04-16T05:30:05", "s", null);