我尝试将字符串转换为 datetime
但每次我得到:
String was not recognized as a valid DateTime.
代码是:
string format = "dd/MM/yyyy";
obj.TransDate = DateTime.ParseExact(lbl_TransDate.Text.Split('/')[0] + "/" + lbl_TransDate.Text.Split('/')[1] + "/" + lbl_TransDate.Text.Split('/')[2], format, CultureInfo.InvariantCulture);
当我调试我尝试解析的日期时:12/4/2012
最佳答案
所需的格式是
string format = "dd/M/yyyy";
虽然我不明白,为什么要拆分和连接字符串,因为你会得到同样的东西?
如果输入是 12/4/2012,用 '/' 拆分后,您将得到 12, 4, 2012 然后将它们连接回获得“12/4/2012”。为什么会这样?
另外,如果你真的需要拆分,你可以存储到一个数组中,这样你就不需要将它拆分 3 次:
var splits = lbl_TransDate.Text.Split('/');
DateTime.ParseExact(splits[0] + "/" + splits[1] + "/" + splits[2], ...);
如果您不信任输入,splits 数组的 Length 可能不等于 3,如果长度大于 3,您可以使用 DateTime.TryParseExact
编辑 您可以使用多种格式的重载 因此,如果输入可能是 12/4/2012 或 12/04/2012,您可以同时提供这两种格式
var formats = new[] {"dd/M/yyyy","dd/MM/yyyy"};
var date = DateTime.ParseExact("12/4/2012", formats,
System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.AssumeLocal);
关于c# - 字符串未被识别为有效的日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10123145/