我收到错误,因为字符串未被识别为有效的日期时间
本文关键字:识别 有效 时间 日期 错误 字符串 因为 | 更新日期: 2023-09-27 18:32:11
private string format = "dd/MM/yyyy HH:mm:ss";
DateTime fromdate = DateTime.ParseExact(GetFromScanDateTextBox.Text, format, CultureInfo.InvariantCulture);
执行此行字符串时出现错误,未被识别为有效日期时间。
我也试过这个,但它不起作用
DateTime fromdate = DateTime.ParseExact(GetFromScanDateTextBox.Text, format,null);
您的格式字符串必须"d/M/yyyy"
,看看这个。
基本上
MM :月份,从 01 到 12。
而
M :月份,从 1 到 12。
日部分也是如此。
你告诉DateTime.ParseExact
你期待一个格式为dd/MM/yyyy HH:mm:ss
的字符串,但你给它一个格式d/M/yyyy
的字符串。
您需要将格式更改为仅d/M/yyyy
.
此外,我建议使用 DateTime.TryParseExact
来验证字符串的有效性,而不是使用异常。
var okay = DateTime.TryParseExact(
input,
new[] { "dd/MM/yyyy HH:mm:ss", "d/M/yyyy" },
new CultureInfo("en-GB"),
DateTimeStyles.None,
out dateTime);
如果您的输入字符串容易更改,TryParseExact
允许您定义多种格式,如上所示,或者,如果它始终与您当前的区域性一致,只需执行DateTime.TryParse
并取消定义格式。
var okay = DateTime.TryParse(input, out dateTime);
如果您的格式始终是月/日/年,特别是在这种情况下(如果您的日期是 2013 年 9 月 3 日),您可以使用:
string format = "MM/dd/yyyy";
string dateTime = "9/3/2013";
dateTime = (dateTime.Split('/')[0].Length == 1 ? "0" + dateTime.Split('/')[0] : dateTime.Split('/')[0]) + "/" + (dateTime.Split('/')[1].Length == 1 ? "0" + dateTime.Split('/')[1] : dateTime.Split('/')[1]) + "/" + dateTime.Split('/')[2];
DateTime fromdate = DateTime.ParseExact(dateTime, format, CultureInfo.InvariantCulture);
不要在格式部分中提供 HH:MM:SS 部分
字符串格式 = "日/月/年";DateTime fromdate = DateTime.ParseExact(test.文本,格式,文化信息,不变文化);