此代碼返回給我'M/d/yyyy'
但我需要'mm/dd/yyyy'
這是怎麼回事?如何通過文化獲得短日期
((CultureInfo)Session["culture"]).DateTimeFormat.ShortDatePattern)
此代碼返回給我'M/d/yyyy'
但我需要'mm/dd/yyyy'
這是怎麼回事?如何通過文化獲得短日期
((CultureInfo)Session["culture"]).DateTimeFormat.ShortDatePattern)
您可以覆蓋如何日期通過指定ToString
方法所需的模板顯示:
DateTime.Now.ToString("MM/dd/yyyy")) //Will display "12/21/2012"
你似乎是使用CultureInfo
對象,其中包含默認格式(和其他文化信息如貨幣)並由操作系統提供。
調用本身DateTime.Now.ToShortDateString()
將使用ShortDatePattern
在當前線程的文化規定的格式,可以用類似設置:
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
這不到風度讓很多,因爲......你想要的圖案是針對特定文化.. 例如:
DateTime.Now.ToString(CultureInfo.GetCultureInfo("en-US").DateTimeFormat.ShortDatePattern);
將返回mm/dd/yyyy
但
DateTime.Now.ToString(CultureInfo.GetCultureInfo("en-GB").DateTimeFormat.ShortDatePattern);
將返回dd/mm/yyyy
。
從您添加的代碼,這不是很清楚的 - 似乎你得到一個特定的文化,但隨後想覆蓋ShortDatePattern
...
如果這是真的,爲什麼要用文化在接收首先會議?使用任何你想要的模式,而不考慮文化。 例如DateTime.Now.ToString("MM/dd/yyyy");
(不管怎麼說,這是可能的覆蓋,爲ShortDatePattern
可以設置,就像@ mipe34在評論中顯示)
你的意思是你要更改的屬性?這是簡單的:
((CultureInfo)Session["culture"]).DateTimeFormat.ShortDatePattern = "MM/dd/yyyy";
但是,如果CultureInfo
恰好是隻讀的,它會拋出運行時。在這種情況下,也許你可以指定一個新的CultureInfo
對象?如果可以的話,像這樣做:
// get reference
var ci = (CultureInfo)Session["culture"];
// clone and reassign to get rid of read-only:
ci = (CultureInfo)(ci.Clone());
// change property:
ci.DateTimeFormat.ShortDatePattern = "MM/dd/yyyy";
// make read-only again
ci = CultureInfo.ReadOnly(ci);
// assign back to your "source":
Session["culture"] = ci;
之後,當人們稱someDateTimeValue.ToShortDateString()
一些新的線程,其CurrentCulture
從Session["culture"]
拍攝,他們將得到新的格式。
注:"m"
或"mm"
是分鐘和"M"
或"MM"
是個月。 "/"
也是文化的DateSeparator
(這可能會翻譯成破折號(-
)或某些文化中的其他內容)。
不確定要了解:您希望從文化中獲得格式,並且您希望返回固定的硬編碼格式? – ken2k
如果您希望它返回特定的格式,您需要先將其設置。 (但它沒有任何意義)。 '(CultureInfo的)會議[ 「文化」])。DateTimeFormat。ShortDatePattern =「mm/dd/yyyy」' – mipe34
不,我需要的格式不是2012/12/21,我需要12/21/2012 – Mediator