我有一个这种格式的字符串:
21?-?10?-?2014? ?15?:?40?:?30
Run Code Online (Sandbox Code Playgroud)
我想以格式制作一个DateTime:
2014-?10?-?21 ?15?:?40?:?30
Run Code Online (Sandbox Code Playgroud)
我试过了:
DateTime dt = DateTime.ParseExact("21?-?10?-?2014? ?15?:?40?:?30", "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
但没有运气,它抛出异常 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);
Run Code Online (Sandbox Code Playgroud)
在两个参数中使用相同的格式.例外情况是一样的,所以问题不在于格式之间的区别.我以前检查过.
您的输入字符串包含从左到右的标记字符,您可以通过在支持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);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
2014-10-21 15:40:30
Run Code Online (Sandbox Code Playgroud)