2012-07-10 28 views
1

我需要定義自定義格式說明符而不使用IFormatProvider爲默認格式提供程序添加自定義日期時間格式說明符

var str = DateTime.Now.ToString("myCustomSpecifier"); 

爲什麼不使用格式提供程序?因爲我正在代碼生成環境中工作,並且指定ToString的第二個參數是不可能的。

與此同時我們不想保留方法.ToString()所以創建另一種使用擴展方法的方法是不可接受的。

我試圖通過Thread.CurrentThread.CurrentUICulture成員搜索,看看是否有任何可配置的東西,我可以爲此設置。或者如果我可以設置默認格式提供者。我找不到任何東西。

有人認爲這是可能的嗎?如果是的話如何?

+0

擴展方法是猶太教嗎? – tmesser 2012-07-10 16:28:30

+0

如果你的意思是定義'.ToCustomString'並使用它,不,這是不可接受的。 – 2012-07-10 16:30:28

回答

0
internal const string DATETIME_FORMAT = "dd MMM yyyy"; 

public void Method() 
{ 
    var str = DateTime.Now.ToString(DATETIME_FORMAT); 
} 
+0

請編輯您的答案以包含一些解釋。僅有代碼的答案對未來SO讀者的教育很少。您的回答是在低質量的審覈隊列中。 – mickmackusa 2017-04-21 17:03:57

0

您可以直接在當前線程

var cultureInfo = (CultureInfo)CultureInfo.GetCultureInfo("fr-FR").Clone(); 
cultureInfo.DateTimeFormat.ShortDatePattern = "dd.MM.yyyy"; 
Thread.CurrentThread.CurrentCulture = cultureInfo; 
Thread.CurrentThread.CurrentUICulture = cultureInfo; 

的文化將這個代碼在App.xaml.cs.的構造函數做到這一點

ToString("d")方法將顯示您的自定義partern。