Календарь добавляет, что метод в Java берет целое число в качестве входа
int secs = 3; cal.add(Calendar.SECOND, secs);
Но что, если секунды являются типом Long.
long secs = 3
Существует довольно много возможностей как добавление повторяющихся секунд, но каковы другие опции?
Если значение, хранящееся в long sec
, меньше или равно, тогда Integer.MAX_VALUE
вы можете преобразовать в int
:
cal.add(Calendar.SECOND, (int) sec));
Если значение меньше или равно Long.MAX_VALUE / 1000
, тогда вы можете преобразовать секунды в миллисекунды и использовать другой подход:
cal.setTimeInMillis(cal.getTimeInMillis() + (sec*1000));
Если значение в секундах не слишком велико для целого числа, приводит к приведению .
long secs = 3;
cal.add(Calendar.SECOND, (int) secs);
Но я настоятельно рекомендую вам использовать joda time вместо API календаря Java.
Преобразуйте секунды в, например, дни, разделив на 86400, затем добавьте дни и оставшиеся секунды. Вам нужно будет сделать это с умом, так как даже после деления на 86400 результат может быть больше, чем int.
Другой способ - преобразовать календарь в миллисекунды с помощью getMillisOf (), добавить желаемое значение, а затем установить его с помощью setTimeInMillis (). Это проще и с очень небольшим риском ошибки, просто не забудьте преобразовать секунды в миллисекунды.
В календаре значения хранятся в виде целых чисел внутри, поэтому нет возможности уместить в него long. Поправьте меня, если я ошибаюсь, но это то, что я прочитал из Java-календаря . Вы должны преобразовать свои секунды в дни или около того, чтобы получить желаемое.