在C#中将字符串dd-MM-yyyy转换为DateTime yyyy-MM-dd

时间:2015-01-27 10:41:31

标签: c# datetime

我有一个这种格式的字符串:

21‎-‎10‎-‎2014‎ ‎15‎:‎40‎:‎30

我希望以下列格式制作DateTime:

2014-‎10‎-‎21 ‎15‎:‎40‎:‎30

我试过了:

DateTime dt = DateTime.ParseExact("21‎-‎10‎-‎2014‎ ‎15‎:‎40‎:‎30", "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);

但没有运气,它会引发异常String was not recognized as a valid DateTime

修改

我也尝试过:

DateTime dt = DateTime.ParseExact("21-‎10‎-‎2014‎ ‎15‎:‎40‎:‎30", "dd-MM-yyyy HH:mm:ss", CultureInfo.InvariantCulture);

在两个参数中使用相同的格式。例外情况是一样的,所以问题不在于格式之间的区别。我之前已经检查过了。

1 个答案:

答案 0 :(得分:6)

您的输入字符串包含left-to-right mark个字符,您可以通过在支持Unicode的编辑器中粘贴它并查看空白字符来查看这些字符。另请参阅Ideone(仅在编辑模式下可见)。

Clean up your input

using System;
using System.Globalization;
using System.Text.RegularExpressions;

public class Test
{
    public static void Main()
    {
        string dateTimeString = "21‎-‎10‎-‎2014‎ ‎15‎:‎40‎:‎30";
        dateTimeString = Regex.Replace(dateTimeString, @"[^\u0000-\u007F]", string.Empty);

        string inputFormat = "dd-MM-yyyy HH:mm:ss";
        string outputFormat = "yyyy-MM-dd HH:mm:ss";
        var dateTime = DateTime.ParseExact(dateTimeString, inputFormat, CultureInfo.InvariantCulture);
        string output = dateTime.ToString(outputFormat);

        Console.WriteLine(output);
    }
}

输出:

2014-10-21 15:40:30