DateTime
само по себе всегда григорианский - DateTime.Year
et c всегда будет возвращать значение в григорианском календаре.
Однако метод ToString
примет во внимание календарь культуры по умолчанию, который он использует для форматирования. Эта культура (по умолчанию) является текущей культурой потоков.
Правильный ответ здесь зависит от того, хотите ли вы использовать текущую культуру потоков для других аспектов форматирования.
Если вам нужна культура - конфиденциальное форматирование (поскольку вы отображаете это непосредственно для пользователя), вы можете клонировать культуру и установить DateTimeFormat.Calendar
в клоне равным GregorianCalendar
, а затем передать клон методу ToString
.
Если вы действительно хотите использовать форматирование, инвариантное к культуре (поскольку оно предназначено для машиночитания, например, в документе JSON), просто передайте CultureInfo.InvariantCulture
ToString
.
(если вы Вы на самом деле беспокоитесь о том, как он отформатирован в отладчике, я не уверен в лучшем ответе ...)