我收到错误,因为字符串未被识别为有效的日期时间

本文关键字:识别 有效 时间 日期 错误 字符串 因为 | 更新日期: 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.文本,格式,文化信息,不变文化);