ObjectDataSource无法将字符串解析为DateTime类型。

3
我有一个文本框,其中存储了ValidFrom表单值的值:
31.01.2012

并将文化设置为:

<globalization culture="en-GB" uiCulture="en-GB"/>

在 web.config 文件中。

现在,ObjectDataSource 更新方法:

    public static void UpdateLac(int id, DateTime ValidFrom)
    {
        /// ...
    }

当我遇到无法解析字符串的异常时,测试失败了。然而,在格式dd.mm.yyyy (31.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)转换为日期时间?请注意不要删除HTML标签。


当使用ObjectDataSource时,01.31.2012会被转换为DateTime类型,但是当我在postback中调用DateTime.Parse("01.31.2012")进行测试时(因为我的区域设置为en-GB),01.31.2012不会被转换。 - dragonfly
对象类型可以与ODS一起使用吗?如果是自定义类型,您能提供其属性和字段的源代码吗? - Jeff
设置日期格式为dd.MM.yyyy,希望它能正常工作。 - Satinder singh
@Jeff:ObjectDataSource 无法与自定义类型一起使用。它调用 UpdateMethod 并传递 .NET 内置类型(如 string、int、DateTime 等)。 - dragonfly
@satinder singh:谢谢。但是我为什么要更改日期格式(在哪里更改)?日期格式不是问题,因为在整个 Web 应用程序中都正确解析,除非 ObjectDataSource 尝试解析它。 - dragonfly
显示剩余3条评论
1个回答

0
据我所知,区域信息是直接从操作系统(在这种情况下为Windows)加载的,您可以检查您的区域设置以查看指定的格式。这是我电脑上的屏幕截图:

http://imageshack.us/photo/my-images/96/engbg.png/

正如您所看到的,短日期格式为:dd/MM/aa,因此可能与您的服务器区域设置有关,或者输入应该是31/01/12,而不是31.01.2012。
希望能对您有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接