我即將創建一個轉換器將日期轉換爲自定義格式。所有文化的最佳日期時間轉換器
實際上在一個轉換器中我有這樣一個日期17/05/2011 00:00:00,我想轉換爲簡單17/05/2011。但是,文化也應該考慮在內。
在我上面的例子中,我有英國文化,但如果用戶是美國人,那麼它將被轉換爲2011年5月17日。
實際上,我還需要一個ConvertBack將日期轉換回數據庫友好格式,以便將它保存回通用且安全而不會誤解。
這是我第一次嘗試它已經失敗:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if(value == null)
return null;
DateTime date = DateTime.Parse(value.ToString(), culture);
return date;
}
而且令人驚訝的是,上面的參數的CultureInfo是我們恩,不顧一切在Windows中設置爲英國。順便說一句,我正在使用這個轉換器的Silverlight 4,也許獲得文化是不同的在這裏......沒有那麼奇怪,我得到一個預期'字符串未被識別爲有效的日期時間。我認爲這是由於我在那裏的美國文化不能理解17個月。如何在Silverlight應用程序中設置我的本地文化?
然後我需要第二個轉換器只返回類似於上面的時間。我想我可能會使用重載DateTimeStyles.NoCurrentDateDefault它從日期生成只有時間,是否正確?
你的幫助非常感謝,
嗨,亞當,謝謝你的迴應。我已經嘗試過date.Date,但是最後的時間還在那裏,並沒有被切斷。 17/05/2011 00:00:00我可以不經意地使用一個子字符串並自己剪切它,但我希望使用一種更清晰的方式來檢索日期,而無需時間。 – Houman 2011-05-18 06:40:01
關於文化,我已經檢查了App.config和Web.config,並且找不到任何設置爲US的文化。實際上EF4已經爲其服務設定了文化=中立。仍然在研究這個... – Houman 2011-05-18 06:41:52
如果你想獲取日期到一個字符串,那麼你可以使用'DateTime.Now.ToShortDateString'。這符合語言環境。 – 2011-05-18 11:42:18