У меня нет времени на создание объекта DateTime, который хранит дату 29.02.101 (тайваньская дата) в C # без изменения культуры потоков.
Когда я делаю это:
DateTime date = new DateTime(2012, 2, 29, new TaiwanCalendar());
Создает объект DateTime с датой 1911 года в будущем.Кажется, что эта перегрузка предназначена для того, чтобы сообщить объекту DateTime, что вы предоставляете тайваньскую дату, а не то, что вам нужна тайваньская дата.
Я могу сделать это
DateTime leapDay = new DateTime(2012, 2, 29);
string date = string.Format("{0}/{1}/{2}", new TaiwanCalendar().GetYear(leapDay), new TaiwanCalendar().GetMonth(leapDay), new TaiwanCalendar().GetDayOfMonth(leapDay));
, но этостроковое представление, и мой вызывающий код нуждается в возвращенном объекте DateTime, и это:
DateTime leapDay = new DateTime(2012, 2, 29);
DateTime date = new DateTime(new TaiwanCalendar().GetYear(leapDay), new TaiwanCalendar().GetMonth(leapDay), new TaiwanCalendar().GetDayOfMonth(leapDay));
не работает (я получаю сообщение об ошибке, говоря, что «параметры года, месяца и дня описывают непредставляемый тип DateTime».).
Мне нужен объект DateTime, который может точно представлять тайваньскую дату без изменения культуры потоков.Это работает:
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("zh-TW");
Thread.CurrentThread.CurrentCulture.DateTimeFormat.Calendar = new TaiwanCalendar();
DateTime date = new DateTime(2012, 2, 29);
, но как только я возвращаю культуру потоков обратно на en-US, дата автоматически возвращается обратно, что не позволяет мне вернуть ее как тайваньскую дату.
Есть лиЕсть ли способ сделать это, или я собираюсь передать свою дату в виде строки?