C#如何将String转换为时间和日期格式?

时间:2010-12-13 08:07:19

标签: c# datetime

我有一个简短的程序,它将字符串转换为简单字符串的日期和时间格式。

然而,由于字符串的顺序,系统似乎无法将字符串转换为日期时间格式。应转换的字符串是一个例子:“Thu Dec 9 05:12:42 2010”

Convert.ToDateTime的方法已被使用但不起作用。

有人可以告知代码吗?谢谢!

String re = "Thu Dec  9 05:12:42 2010";

DateTime time = Convert.ToDateTime(re);

Console.WriteLine(time.ToString("dddd, dd MMMM yyyy HH:mm:ss"));

5 个答案:

答案 0 :(得分:6)

查看DateTime.TryParseExact

DateTime time; 
if (DateTime.TryParseExact(re,
     "ddd MMM d hh:mm:ss yyyy", CultureInfo.CurrentCulture, 
      DateTimeStyles.None, out time)) {

    Console.WriteLine(time.ToString("dddd, dd MMMM yyyy HH:mm:ss"));
} else {
    Console.WriteLine("'{0}' is not in an acceptable format.", re);
}

答案 1 :(得分:1)

通常需要给出一个关于您期望的特定模式的提示:

编辑:双倍空间是一种痛苦,因为d无法处理;

DateTime time = DateTime.ParseExact(re.Replace("  "," "),
     "ddd MMM d hh:mm:ss yyyy", CultureInfo.CurrentCulture);

答案 2 :(得分:0)

答案 3 :(得分:0)

试试这个

DateTime time = Convert.ToDateTime("2010, 9, 12, 05, 12, 42"); 

Console.WriteLine(time.ToString("dddd, dd MMMM yyyy HH:mm:ss")); 

答案 4 :(得分:0)

不确定字符串输入是否应该具有双倍空格,但您可以将其拉出并使用geoff的答案。

re = Regex.Replace(re, @"\s+", " ");

其他选项是相应地调整他的匹配字符串。

DateTime time = DateTime.ParseExact(re, "ddd MMM  d HH:mm:ss yyyy", CultureInfo.CurrentCulture);