2011-12-01 63 views
3

我遇到了使用jQuery UI DatePicker对象的MVC3应用程序的问题。MVC3文化vs jQuery UI日期格式

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

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

但是访问该格式代码,格式返回英国的日期是:dd/MM/yyyy

为了从jQuery UI日期选择器格式化得到的数据,我需要指定一个日期格式。但是对于英国格式的日期,我需要指定为dd/mm/yy

简单的解决办法是只使用Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern在我的jQuery调用格式化日期的格式,但很明显,这给出了一个格式不一致,因为这是由jQuery的不同的解释UI(01/December/20112011而不是01/12/2011

有没有简单的解决方法呢?

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

回答

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/yyyyMM/DD/yyyydd-MM-yyyy等,它应该在jQuery中解决。

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

+0

这很好用。希望没有其他日期格式不一致,但... –

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