разделить 6-значный Int на 3 части? - PullRequest
0 голосов
/ 14 февраля 2011

Я хочу получить шестизначный номер пользователя и разделить его на 3 части как (день, месяц, год)

Пример:

int date=111213;
day =11;
month =12;
year =13;

Я думаю, мне нужно преобразовать его в строку , а затем с помощью substring () я могу сделать это.

Любая легкая идея ??

Ответы [ 4 ]

6 голосов
/ 14 февраля 2011

Как насчет:

// Assuming a more sensible format, where the logically most significant part
// is the most significant part of the number too. That would allow sorting by
// integer value to be equivalent to sorting chronologically.
int day = date % 100;
int month = (date / 100) % 100;
int year = date / 10000;

// Assuming the format from the question (not sensible IMO)
int year = date % 100;
int month = (date / 100) % 100;
int day = date / 10000;

(У вас есть для хранения ваших данных таким образом, чтобы начать с? Ick.)

1 голос
/ 14 февраля 2011

Вы можете сделать это с помощью модульной арифметики:

int day = date / 10000;
int month = (date / 100) % 100;
int year = date % 100;
1 голос
/ 14 февраля 2011

Хранение даты в виде целого числа, подобного этому, не идеально, но если вы должны это сделать - и вы уверены, что число всегда будет использовать указанный формат - тогда вы можете легко извлечь день, месяц и год:

int day = date / 10000;
int month = (date / 100) % 100;
int year = date % 100;
0 голосов
/ 14 февраля 2011

Вот решение на Java без оптимизации:

 final int value = 111213;
    int day;
    int month;
    int year;

    day = value / 10000;
    month = (value - (day * 10000)) / 100;
    year = (value - (day * 10000)) - month * 100;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...