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

Converting string dd-MM-yyyy to DateTime yyyy-MM-dd in C#

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

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);

两个参数的格式相同。例外是相同的,所以问题不是格式之间的差异。我之前检查过。

您输入的字符串包含 left-to-right mark characters, which you can see by pasting it in an Unicode-aware editor and viewing whitespace characters. See also 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