2012-12-14 113 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显示的转换作为第一步。