Получение григорианской даты, а не даты хиджры в windows 10 - PullRequest
1 голос
/ 01 апреля 2020

Я использую календарь Hijri на своей windows 10. Я работаю над программой C#, и я пытался использовать DateTime.Now, чтобы получить дату AD, но она дала мне дату Hijri.

Так Как я могу получить дату нашей эры, а не дату хиджры?

Должен ли я конвертировать хиджру в дату нашей эры?

1 Ответ

2 голосов
/ 01 апреля 2020

DateTime само по себе всегда григорианский - DateTime.Year et c всегда будет возвращать значение в григорианском календаре.

Однако метод ToString примет во внимание календарь культуры по умолчанию, который он использует для форматирования. Эта культура (по умолчанию) является текущей культурой потоков.

Правильный ответ здесь зависит от того, хотите ли вы использовать текущую культуру потоков для других аспектов форматирования.

Если вам нужна культура - конфиденциальное форматирование (поскольку вы отображаете это непосредственно для пользователя), вы можете клонировать культуру и установить DateTimeFormat.Calendar в клоне равным GregorianCalendar, а затем передать клон методу ToString.

Если вы действительно хотите использовать форматирование, инвариантное к культуре (поскольку оно предназначено для машиночитания, например, в документе JSON), просто передайте CultureInfo.InvariantCulture ToString.

(если вы Вы на самом деле беспокоитесь о том, как он отформатирован в отладчике, я не уверен в лучшем ответе ...)

...