Как добавить длинное значение к календарю?

Календарь добавляет, что метод в Java берет целое число в качестве входа

int secs = 3;
cal.add(Calendar.SECOND, secs);

Но что, если секунды являются типом Long.

long secs = 3

Существует довольно много возможностей как добавление повторяющихся секунд, но каковы другие опции?

11
задан Strudel 10 August 2010 в 07:03
поделиться

4 ответа

Если значение, хранящееся в long sec , меньше или равно, тогда Integer.MAX_VALUE вы можете преобразовать в int :

cal.add(Calendar.SECOND, (int) sec));

Если значение меньше или равно Long.MAX_VALUE / 1000 , тогда вы можете преобразовать секунды в миллисекунды и использовать другой подход:

cal.setTimeInMillis(cal.getTimeInMillis() + (sec*1000));
16
ответ дан 3 December 2019 в 04:30
поделиться

Если значение в секундах не слишком велико для целого числа, приводит к приведению .

long secs = 3;
cal.add(Calendar.SECOND, (int) secs);

Но я настоятельно рекомендую вам использовать joda time вместо API календаря Java.

7
ответ дан 3 December 2019 в 04:30
поделиться

Преобразуйте секунды в, например, дни, разделив на 86400, затем добавьте дни и оставшиеся секунды. Вам нужно будет сделать это с умом, так как даже после деления на 86400 результат может быть больше, чем int.

Другой способ - преобразовать календарь в миллисекунды с помощью getMillisOf (), добавить желаемое значение, а затем установить его с помощью setTimeInMillis (). Это проще и с очень небольшим риском ошибки, просто не забудьте преобразовать секунды в миллисекунды.

1
ответ дан 3 December 2019 в 04:30
поделиться

В календаре значения хранятся в виде целых чисел внутри, поэтому нет возможности уместить в него long. Поправьте меня, если я ошибаюсь, но это то, что я прочитал из Java-календаря . Вы должны преобразовать свои секунды в дни или около того, чтобы получить желаемое.

0
ответ дан 3 December 2019 в 04:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: