C#将DateTime从一种格式转换为另一种格式

时间:2013-10-30 14:06:04

标签: c#

我认为这将是一个非常简单的事情,我试图谷歌它,我一直得到异常String was not recognized as a valid DateTime.

这是我的价值"2013-10-21T14:10:49"这就是我要将其转换为10/21/2013 10:49

的内容
string sample = "2013-10-21T14:10:49";
DateTime date31 = DateTime.ParseExact(sample, "MM/dd/yyyy HH:mm", System.Globalization.CultureInfo.InvariantCulture);

3 个答案:

答案 0 :(得分:2)

您的字符串显示为“Xml-serialized”格式。所以这是XmlConvert的工作。

string sample = "2013-10-21T14:10:49";
string converted = XmlConvert.ToDateTime(sample, XmlDateTimeSerializationMode.Unspecified)
     .ToString("MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture);

答案 1 :(得分:2)

当您撰写DateTime.ParseExact(sample, "MM/dd/yyyy HH:mm", ...)时,您说sample的格式为MM/dd/yyyy HH:mm。因为它不是,它会引发异常。

知道DateTime没有与之关联的任何格式非常重要。只有当你将它转换为字符串时,才能发挥作用。你应该使用这样的东西:

string sample = "2013-10-21T14:10:49";
DateTime date31 = DateTime.Parse(sample, System.Globalization.CultureInfo.InvariantCulture);
string date31string = date31.ToString("MM/dd/yyyy HH:mm", System.Globalization.CultureInfo.InvariantCulture);
// date31string is "10/21/2013 14:10"

而不是ParseExact,我使用了Parse,因为格式被Parse识别,我认为它不能限制它可以接受的格式< em>仅该特定格式。

答案 2 :(得分:1)

您不需要ParseExact方法,Parse方法就足够了,因为它允许您的日期表示。有关允许的输入格式的概述,请参阅DateTime - The string to parse

这意味着以下工作:

string sample = "2013-10-21T14:10:49";
DateTime parsed = DateTime.Parse(sample);

Console.WriteLine(parsed.ToString("MM/dd/yyyy HH:mm:ss"));

结果是:

10/21/2013 14:10:49