如何根据文化显示仅包含日期和月份的日期字符串?

Jes*_*ica 3 c# datetime datetime-format windows-phone-7 windows-phone-7.1

我需要在Windows手机上显示一些日期和月份的日期.

例如,1月1日,对于美国用户,我希望文本为"1/31",对于英国用户,我希望它为"31/1".

实现这样的目标的最简单方法是什么?

更新: 我的应用程序将在很多国家/地区提供.我是否必须指定每种文化才能得到我想要的东西?

例如,

de-DE Culture                         01.10
en-US Culture                         10/1
es-ES Culture                         01/10
fr-FR Culture                         01/10
Run Code Online (Sandbox Code Playgroud)

左栏包含我的应用程序将支持的一些国家/地区,右栏是我希望日期文字的方式.

有没有通用的方法我可以做到这一点?

ken*_*n2k 5

// 13 August
string americanDate = theDate.ToString("m", new CultureInfo("en-us"));

// August 13
string ukDate = theDate.ToString("m", new CultureInfo("en-gb"));
Run Code Online (Sandbox Code Playgroud)

有关可用格式的完整列表,请参阅MSDN.

编辑:

在您的应用程序中,不要手动指定CultureInfo实例:使用默认文化DateTime.ToString,这是执行线程的文化.

所以你的代码变成:

string cultureSpecificDate = theDate.ToString("m");
Run Code Online (Sandbox Code Playgroud)

"m"您在可用格式列表中选择的日期格式在哪里.你想要的那个似乎不是DateTimeFormatInfo班级提供的标准.你不能在下面的列表中选择支持的模式吗?

/*
This code produces the following output.

FORMAT  en-US EXAMPLE
CHAR    VALUE OF ASSOCIATED PROPERTY, IF ANY

  d     1/3/2002
        M/d/yyyy (ShortDatePattern)

  D     Thursday, January 03, 2002
        dddd, MMMM dd, yyyy (LongDatePattern)

  f     Thursday, January 03, 2002 12:00 AM

  F     Thursday, January 03, 2002 12:00:00 AM
        dddd, MMMM dd, yyyy h:mm:ss tt (FullDateTimePattern)

  g     1/3/2002 12:00 AM

  G     1/3/2002 12:00:00 AM

  m     January 03
        MMMM dd (MonthDayPattern)

  M     January 03
        MMMM dd (MonthDayPattern)

  o     2002-01-03T00:00:00.0000000

  r     Thu, 03 Jan 2002 00:00:00 GMT
        ddd, dd MMM yyyy HH':'mm':'ss 'GMT' (RFC1123Pattern)

  R     Thu, 03 Jan 2002 00:00:00 GMT
        ddd, dd MMM yyyy HH':'mm':'ss 'GMT' (RFC1123Pattern)

  s     2002-01-03T00:00:00
        yyyy'-'MM'-'dd'T'HH':'mm':'ss (SortableDateTimePattern)

  t     12:00 AM
        h:mm tt (ShortTimePattern)

  T     12:00:00 AM
        h:mm:ss tt (LongTimePattern)

  u     2002-01-03 00:00:00Z
        yyyy'-'MM'-'dd HH':'mm':'ss'Z' (UniversalSortableDateTimePattern)

  U     Thursday, January 03, 2002 8:00:00 AM

  y     January, 2002
        MMMM, yyyy (YearMonthPattern)

  Y     January, 2002
        MMMM, yyyy (YearMonthPattern)

*/
Run Code Online (Sandbox Code Playgroud)