【问题标题】:ASP.NET MVC DateTime manual input conversion best practiceASP.NET MVC DateTime 手动输入转换最佳实践
【发布时间】:2011-09-02 07:56:58
【问题描述】:

我有一个带有普通 Html 表单的 ASP.NET MVC 站点,其中包含用于输入日期的文本字段。

<input type="textbox" name="date"/>

控制器方法如下:

void DoSomething(DateTime date)
{
 ....
}

由于用户有不同的语言环境和习惯如何输入日期我应该如何处理日期时间格式?我想应该有代码尝试将字符串解析为几种日期时间格式。每次控制器需要 DateTime 时,我可以在没有 Helper 类调用的情况下集中处理所有 DateTime(s) 参数吗?如何考虑用户语言环境?

提前感谢您!

【问题讨论】:

    标签: c# asp.net-mvc


    【解决方案1】:

    您可以使用jQuery UI datepicker 为例,并设置格式。这也将是一个比简单的文本框更好的用户体验..

    $('#datetime').datepicker({ format: 'yy-mm-dd hh:ii' });
    

    Datepicker 支持对其内容进行本地化以满足 不同的语言和日期格式。

    【讨论】:

    • 谢谢你,@CD。但是,如果没有 DateTime Pickers 和客户端硬编码的日期时间格式,我怎么能活呢?
    【解决方案2】:

    这里的最佳做法是强制用户只输入一种日期格式。

    您可以使用RegularExpression validation 和日期选择器(例如JQuery Datepicker)来实现此目的。

    更新:

    另外,如果您不想强制用户使用一种格式,请查看 C# 的 DateTime.Parse 方法,但它有点棘手,使用时需要小心。可能会有一些冲突。 (E.g. 2011-01-01 can be seen as two different dates if you don't know the format.)

    【讨论】:

      【解决方案3】:

      如果您尝试处理每种类型的格式,则必须提供格式的类型。 常见的问题是 mm-dd-yy 和 dd-mm-yy 格式,例如 02-01-11。问题是 1 月 2 日还是 2 月 1 日。

      如果您能够发送正确的格式类型,则应该没有任何问题,只是输入字符串本身可能是错误的。

      最好的解决方案(您可能不会寻找)是在用户输入表单时验证日期/时间。就像为日期和月份制作单独的下拉框(或只是文本框)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-12
        • 1970-01-01
        相关资源
        最近更新 更多