Расщепляя целое число из 6 цифр в С#

У меня есть целое число 6digit, скажем, "153060", что я хотел бы разделить на

int a = 15 (первые 2 цифры),

int b = 30 (второй 2 цифры),

int c = 60 (третья 2 цифры),

Первое, что приходит в голову, это преобразовать int в строку, разбить ее с помощью SubString (или вариации), а затем преобразовать обратно в int.

Это похоже на очень неэффективный способ сделать это. Может ли кто-нибудь рекомендовать лучший/более быстрый способ справиться с этим?

Спасибо!

Дополнительная информация: причина расщепления int состоит в том, что 6-значное целое представляет HHMMSS, и я бы хотел использовать его для создания нового экземпляра DateTime:

DateTime myDateTime = new DateTime (Год, Месяц, День, a, b, c);

Однако поле пользователя может принимать только целые числа.

Ответ 1

Как насчет чего-то подобного?

int i = 153060;

int a = i / 10000;
int b = (i - (a * 10000)) / 100;
int c = (i - ((a * 10000) + (b * 100)));

Ответ 2

int y = number / 10000;
int m = (number - y*10000) / 100;
in d = number % 100;

Ответ 3

Если ваша конечная цель - DateTime, вы можете использовать TimeSpan.ParseExact для извлечения TimeSpan из строки, а затем добавить ее в DateTime:

TimeSpan time = TimeSpan.ParseExact(time, "hhmmss", CultureInfo.InvariantCulture);
DateTime myDateTime = new DateTime(2011, 11, 2);
myDateTime = myDateTime.Add(time);

(Предполагается > =.NET 4)

Ответ 4

Вы можете сделать это без преобразования в строку с помощью:

int a = 153060 / 10000;
int b = (153060 / 100) % 100;
int c = 153060 % 100;

Я не уверен, насколько эффективно это сравнивается с преобразованием в строку. Я думаю, что это всего 4 операции. Это может быть быстрее.