Добро пожаловать в сообщество, Филлис. :)
Антон прав, ваши струнные манипуляции будут медленными. Поскольку похоже, что вы используете параметр в качестве битового поля, я бы посоветовал изучить различные (гораздо более быстрые) битовые операторы: <<, >>, &, | и ~. Похоже, что вы пытаетесь сделать бинарную манипуляцию, так что используйте операторы, созданные для него.
например. (не проверено, только с манжеты):
Вы начинаете со значения 0x6c9f7fff
. Байт старшего разряда составляет год. Чтобы замаскировать все, что не год, сделайте что-то вроде:
int year = ((binDate & 0xFF000000) >> 24) + BaseYear;
Аналогично, следующие 4 бита - это месяц, поэтому:
int month = (binDate & 0x00F00000) >> 20;
int date = (binDate & 0x000F8000) >> 15;
return new DateTime(year, month, date);