我有一个这种格式的字符串:
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);
在两个参数中使用相同的格式。例外情况是一样的,所以问题不在于格式之间的区别。我之前已经检查过了。
答案 0 :(得分:6)
您的输入字符串包含left-to-right mark个字符,您可以通过在支持Unicode的编辑器中粘贴它并查看空白字符来查看这些字符。另请参阅Ideone(仅在编辑模式下可见)。
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