-1
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);
4

4 回答 4

3

你的格式字符串一定是"d/M/yyyy",看看这个

基本上

MM:月份,从01到 12。

尽管

M:月份,从1到 12。

白天部分也一样。

于 2013-09-20T10:12:00.180 回答
2

您是在DateTime.ParseExact说您期望一个带有 format 的字符串,dd/MM/yyyy HH:mm:ss但您给它的是一个带有 format 的字符串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-09-20T10:18:02.000 回答
-1

如果您的格式始终是月/日/年,特别是在这种情况下(如果您的日期是3rd Sept 2013),您可以使用:

    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);
于 2013-09-20T10:09:58.683 回答
-1

不要在格式部分提供 HH:MM:SS 部分

字符串格式 = "dd/MM/yyyy"; DateTime fromdate = DateTime.ParseExact(test.Text, format, CultureInfo.InvariantCulture);

于 2013-09-20T10:20:28.877 回答