CultureInfo встроен в .NET framework, так что вам не нужно беспокоиться о деталях дат форматирования для каждой культуры. Поэтому вы должны просто сделать DateTime.ToShortDateString()
и сделать это.
Это, как говорится, мы можем изменить CultureInfo ShortDatePattern, чтобы получить то, что вы хотите.
static void Main()
{
DateTime date = new DateTime(2014, 1, 2);
// Change our CuurentCulture to: US
CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("en-us");
// Standard format for US: 1/2/2014
Console.WriteLine(date.ToString("d"));
// Force leading zero on month and day for US format: 01/02/2014
Console.WriteLine(GetShortDateString(date));
// Change our CuurentCulture to: AU
CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("en-au");
// Standard format for AU: 2/01/2014
Console.WriteLine(date.ToString("d"));
// Force leading zero on day for AU format: 02/01/2014
Console.WriteLine(GetShortDateString(date));
}
static string GetShortDateString(DateTime date)
{
string format = CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern;
if (!format.Contains("dd"))
format = format.Replace("d", "dd");
if (!format.Contains("MM"))
format = format.Replace("M", "MM");
return date.ToString(format);
}
что вы подразумеваете под набивкой? –
формат dd будет заполнять дату «0», если это всего лишь одна цифра. т.е. первое ноября в Австралии будет 01/11 вместо 1/11 – hitch
Похоже, что Джон Скит обращается к аналогичной проблеме здесь: http://stackoverflow.com/questions/9006806/get-culture-specific-date-with -2-digit-year-in-c-sharp? Rq = 1 – hitch