2012-12-14 112 views
3

在我們的應用程序中,我們基於以編程方式確定的月結束日期來構建日期選擇菜單。在美國,日期可能是12/31/2012。在法國,它可能是2012年12月31日,或者它可能與我從CultureInfo獲得的格式略有不同。將特定日期轉換爲本地短日期格式

我的問題是這樣的:如果我有一個字符串日期,如2012年12月31日由應用程序生成 - 我如何正確格式化它的應用程序正在運行的文化?我無法將字符串轉換爲日期,然後對其進行格式化,因爲我不知道應用程序正在運行的文化以及什麼構成有效日期。我將不得不解析短日期格式以嘗試正確顯示日期嗎?

回答

5

我無法將字符串轉換爲一個日期,然後進行格式化,因爲我不知道提前培養什麼應用程序在

是的,可以被運行。您可以將它解析爲DateTime並使用當前文化進行格式化。

VB.NET:

Dim myDate As DateTime 
      = DateTime.Parse("12/31/2012", CultureInfo.InvariantCulture) 
Dim cultureAwareShortDate As String = 
      = myDate.ToString("d", Thread.CurrentThread.CurrentUICulture) 

C#:

var myDate = DateTime.Parse("12/31/2012", CultureInfo.InvariantCulture); 
var cultureAwareShortDate 
      = myDate.ToString("d", Thread.CurrentThread.CurrentUICulture); 
+1

還有.ToShortDateString()方法,它只使用與當前線程關聯的區域性,不需要函數的任何參數。 –

0

理想情況下,應用程序將產生的時間作爲一個DateTime而不是字符串。那麼你不需要使用Oded顯示的轉換作爲第一步。