【问题标题】:MVC3 Cultures vs jQuery UI Date FormatsMVC3 文化与 jQuery UI 日期格式
【发布时间】:2011-12-01 16:17:24
【问题描述】:

我在使用 jQuery UI DatePicker 对象的 MVC3 应用程序中遇到问题。

在 MVC 应用程序中,我要求用户选择他们所需的文化,即 en-GB,然后将应用程序中的所有日期和货币格式化为英国格式。

然后我可以通过Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern 访问格式化程序代码

但是,英国日期的返回格式为:dd/MM/yyyy

要格式化来自 jQuery UI 日期选择器的结果数据,我需要指定日期格式。但是对于英国格式的日期,我需要将格式指定为dd/mm/yy

简单的解决方案是在我的 jQuery 调用中使用 Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern 来格式化日期,但显然这会导致格式不一致,因为 jQuery UI 对此的解释不同(01/December/20112011 而不是 01/12/2011

有什么简单的方法可以解决这个问题吗?

我能想到的唯一方法是两次询问用户以什么格式显示日期?

【问题讨论】:

    标签: asp.net-mvc-3 jquery-ui datepicker


    【解决方案1】:

    我可以想到另一种解决方案,但技术含量很低,我不确定这是否是正确的方法:

    var dateTime = Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern;
    var lowerCaseMonths = Regex.Replace(dateTime, "MM","mm");
    var yearOnlyOnce = Regex.Replace(lowerCaseMonths, "yyyy", "yy");
    

    没有“解释变量”只是

    Regex.Replace(Regex.Replace(Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern, "MM","mm"), "yyyy", "yy")
    

    那我猜不管是什么格式,dd/MM/yyyyMM/DD/yyyydd-MM-yyyy 等等,它应该在 jQuery 中工作。

    也许有人有更好的解决方案,但至少这似乎比要求用户输入两次要好。

    【讨论】:

    • 效果很好。但希望没有其他不一致的日期格式......
    【解决方案2】:
    @System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern.ToLower().Replace("yyyy", "yy")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-30
      • 2014-10-29
      • 2011-12-02
      • 2013-08-02
      • 2016-06-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多