System.FormatException:字符串未被识别为有效的日期时间 - 尝试转换 MM/DD/YYYY 时

问题描述 投票:0回答:7

我有以下 C# 方法:

DateTime ConvertStringToDate(string dateInString)
    {
        try {
            //string SSD = dateInString;
            //DateTime date = Convert.ToDateTime(SSD);
            //string strDate = String.Format("{0:yyyy-MM-dd HH:mm:ss.fff}", date);
            //return Convert.ToDateTime(strDate);
    
            return DateTime.ParseExact(dateInString, "MM/dd/yyyy", CultureInfo.InvariantCulture);
        }
        catch (Exception) { }
        return DateTime.Today;
    } 

注释中的代码是我之前尝试过的另一种方式。

我在印度,为美国的客户开发 ASP.NET WebForms 应用程序。在其中一份表格中,我的客户将以

TextBox
输入日期,例如 6/20/2018,即 MM/dd/yyyy 格式。

但是,在这两种方式中我都遇到了这个错误:

System.FormatException: 'String was not recognized as a valid DateTime.'
c# asp.net .net datetime webforms
7个回答
12
投票
return DateTime.ParseExact(dateInString, "M/d/yyyy", CultureInfo.InvariantCulture);

在这里查看

我的答案和 Fabulous 的答案之间的区别在于,我还将

dd
缩短为
d
,因此如果您的用户写
6/6/2018
,它也会起作用


3
投票

您的日期格式为 MM/dd/yyyy,您的输入不匹配。现在是月/日/年

根据您的评论,要解决 6/1/2018 问题,您需要按如下方式进行操作 M/d/yyyy


1
投票

您的格式字符串缺少 AM/PM 设计器:

return DateTime.ParseExact
    (dateInString + " 12:00:00 AM", "MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);
    // Here ---------------------------------------------^

1
投票

尝试不与字符串“AM”连接


1
投票

几天前,即 7 月 9 日,我也遇到了同样的异常,我只是在 0 后面附加了 9 以匹配日期格式。

尝试在月份中添加 0 以匹配日期格式中的 MM


0
投票

有时您的系统时间和日期格式与测试格式不一样,您可以尝试更改系统日期和时间格式


0
投票

如果你想将这个(01-01-2022)类型的字符串转换为日期 然后尝试下面的代码。

DateTime date = DateTime.ParseExact("01-01-2022", "MM-dd-yyyy", CultureInfo.InvariantCulture);

如果你想将这个(01/01/2022)类型的字符串转换为日期 然后尝试下面的代码。

DateTime date = DateTime.ParseExact("01-01-2022", "MM/dd/yyyy", CultureInfo.InvariantCulture);
© www.soinside.com 2019 - 2024. All rights reserved.