【问题标题】:ObjectDataSource fails to parse string to DateTimeObjectDataSource 无法将字符串解析为 DateTime
【发布时间】:2012-07-02 12:52:24
【问题描述】:

我有一个包含 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 内部转换无法将 string (31.01.2012) 转换为 DateTime 呢?

【问题讨论】:

  • 试试 01.31.2012 看看它是否工作
  • 01.31.2012 被 ObjectDataSource 转换为 DateTime,但是当我在回发中调用(只是为了测试)DateTime.Parse("01.31.2012") (因为我的文化是设置为 en-GB)
  • 对象类型可以与 ODS 一起使用吗?如果是自定义类型,能否提供其属性和字段的源代码?
  • 设置格式为 dd.MM.yyyy 希望它的作品
  • @Jeff : ObjectDataSource 不适用于自定义类型。它调用 UpdateMethod 并传递 .NET 内置类型(字符串、int、DateTime 等)

标签: c# asp.net .net objectdatasource datetime-format


【解决方案1】:

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

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

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

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-26
    • 2020-09-27
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    相关资源
    最近更新 更多