2013-07-18 3 views
2

проверки ниже фрагмент кода,string.Format() DateTime С арабской культуры

namespace TestDateConvertion 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      DateTime testValue = new DateTime(2013, 12, 15, 15, 33, 44); 

      CultureInfo culture = new CultureInfo("ar-SA"); 
      string stringValue = string.Format(culture, "{0:d} {0:HH:mm:ss}", testValue); 
      Console.WriteLine(stringValue); 
      Console.ReadLine(); 
     } 
    } 
} 

Это дает результат, как

22/02/35 15:33:44

Я не понимаю, как это возможно. что делает 35 на выходе

+1

Без проверки, я бы предположил, что культура 'ar-SA' связана с календарем [hijri] (http: //en.wikipedia .org/wiki/Hijri_calendar), в котором декабрь григорианского 2013 года соответствует дате в 1435 году (1435 начинается в том, что является одним из первых дней ноября в григорианском году 2013 года). –

+0

Как культура, которую вы устанавливаете в формате даты в соответствии с HijriCalendar, вы получили этот результат ... год в вашем выходе равен 1435. Это соответствует HijriCalendar – rags

+0

ваш код вызывает исключение для меня. 'Указанное время не поддерживается в этом календаре. Это должно быть между 30.04.19800 00:00 (григорианская дата) и 11/16/2077 23:59:59 (григорианская дата) 'это работа для вас? –

ответ

5

Это 13/12/2015 в Хиджри, 35 означает 1435 в Хиджри, формат даты по умолчанию для Саудовской Аравии.

1

Не является частью вас год? Я попробую string.Format(culture, "{0:dd MM yyyy} {0:HH:mm:ss}", testValue);, вы получите 12 02 1435 15:33:44