Вернуть Datetime.Day в персидской культуре C#
Я намерен вернуть день месяца в персидской культуре. Я уже установил культуру, и она работает хорошо. день, который показывает, находится в персидском календаре. Но мне нужно где-то проверить точный день месяца,
например сегодня 2018-2-3, а в персидском календаре 1396-11-14,
var date = DateTime.Now
показывает мне правильную дату и время в персидском календаре. Но
var date = DateTime.Now.Day
показывает мне 3, а не 14. Мне нужно 14! Я знаю, что могу изменить его на строковое и получить день, но это делает мой код настолько грязным, и я не очень заинтересован в этом, потому что я использовал это во многих частях программы. Там в любом случае?
2 ответа
Я хочу уточнить несколько вещей.
DateTime
экземпляр всегда в григорианском календаре, несмотря ни на что. Удивительно, но у него есть несколько конструкторов, которые занимают Calendar
в качестве параметра, но я не думаю, что этот параметр влияет на сохранение его как григорианского эквивалента внутри.
Если вы хотите получить некоторые части DateTime в определенном календаре, вам нужно вызвать этот экземпляр DateTime в качестве параметра GetXXX
методы в этом экземпляре календаря.
Для экзамена;
var today = DateTime.Today;
var persian = new PersianCalendar();
Console.WriteLine(persian.GetDayOfMonth(today)); // 14
Здесь демонстрация.
Вы попробуете этот код.
CultureInfo info = new CultureInfo("fa-Ir");
info.DateTimeFormat.Calendar = new PersianCalendar();
string day= "";
Thread.CurrentThread.CurrentCulture = info;
day= DateTime.Now.ToString("dd");
перейдите по этой ссылке: https://archive.codeplex.com/?p=persianculture