C# ObjectDataSource无法将字符串解析为DateTime

C# ObjectDataSource无法将字符串解析为DateTime,c#,asp.net,.net,objectdatasource,datetime-format,C#,Asp.net,.net,Objectdatasource,Datetime Format,我有一个带有值的文本框,用于存储表单值的有效值: 31.01.2012 文化设置为: <globalization culture="en-GB" uiCulture="en-GB"/> 失败,因为我得到无法分析字符串的异常。但是,格式为dd.mm.yyyy(31.01.2012)的日期是有效的en GB格式,可以解析(据我所知)。我已使用以下代码对其进行了测试: DateTimeFormatInfo dtfi = CultureInfo.CreateSp

我有一个带有值的文本框,用于存储表单值的有效值:

31.01.2012
文化设置为:

<globalization culture="en-GB" uiCulture="en-GB"/>
失败,因为我得到无法分析字符串的异常。但是,格式为dd.mm.yyyy31.01.2012)的日期是有效的en GB格式,可以解析(据我所知)。我已使用以下代码对其进行了测试:

            DateTimeFormatInfo dtfi = CultureInfo.CreateSpecificCulture("en-GB").DateTimeFormat;
            var date = DateTime.Parse("31.01.2012", dtfi);
            Console.Write(date.ToLongDateString());

那么,在本例中,ObjectDataSource内部转换为什么无法将字符串(31.01.2012)转换为日期时间

据我所知,区域性信息是直接从操作系统(在本例中为windows)加载的,您可以检查指定格式的区域设置。这是我电脑上的屏幕截图:

正如您所看到的,短日期的格式是:dd/MM/aa,因此可能您的服务器区域设置有问题,或者输入应该是:31/01/12,而不是31.01.2012


希望这能有所帮助。

试试01.31.2012,看看ObjectDataSource是否会将其工作状态01.31.2012转换为DateTime,但当我调用(只是为了测试)DateTime时,01.31.2012不会转换。回发中的解析(“01.31.2012”)(因为我的区域性设置为en GB)ODS是否可以使用对象类型?如果是自定义类型,能否提供其属性和字段的源代码?请将格式设置为dd.MM.yyyyworks@Jeff:ObjectDataSource不适用于自定义类型。它调用UpdateMethod并传递.NET内置类型(string、int、DateTime等)
            DateTimeFormatInfo dtfi = CultureInfo.CreateSpecificCulture("en-GB").DateTimeFormat;
            var date = DateTime.Parse("31.01.2012", dtfi);
            Console.Write(date.ToLongDateString());