2011-12-01 67 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")