MVC3文化与jQuery UI日期格式

时间:2011-12-01 16:17:25

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

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

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

然后我可以通过Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern

访问格式化程序代码

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

要从jQuery UI datepicker格式化结果数据,我需要指定日期格式。但对于英国格式的日期,我需要将格式指定为dd/mm/yy

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

这有什么简单的方法吗?

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

2 个答案:

答案 0 :(得分:0)

我可以想到另一个解决方案,但那是非常低技术的,我不确定这是否是正确的方法:

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/yyyy MM/DD/yyyy dd-MM-yyyy等,它应该在jQuery中运行。

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

答案 1 :(得分:0)

@System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern.ToLower().Replace("yyyy", "yy")