Ответ 1
Как насчет чего-то подобного?
int i = 153060;
int a = i / 10000;
int b = (i - (a * 10000)) / 100;
int c = (i - ((a * 10000) + (b * 100)));
У меня есть целое число 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);
Однако поле пользователя может принимать только целые числа.
Как насчет чего-то подобного?
int i = 153060;
int a = i / 10000;
int b = (i - (a * 10000)) / 100;
int c = (i - ((a * 10000) + (b * 100)));
int y = number / 10000;
int m = (number - y*10000) / 100;
in d = number % 100;
Если ваша конечная цель - 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)
Вы можете сделать это без преобразования в строку с помощью:
int a = 153060 / 10000;
int b = (153060 / 100) % 100;
int c = 153060 % 100;
Я не уверен, насколько эффективно это сравнивается с преобразованием в строку. Я думаю, что это всего 4 операции. Это может быть быстрее.