Calendario añadir un método en Java que toma un entero como entrada

int segundos = 3; 
cal.add(Calendar.SEGUNDO, segundos); 

Pero ¿y si los segundos son de tipo Long.

long secs = 3

Hay pocas posibilidades, como la adición de los segundos iterativo, pero ¿cuáles son las otras opciones?

Wow, 10 minutos más tarde, bang, 4 respuestas. Gracias!

OriginalEl autor Strudel | 2010-08-10

5 Comentarios

  1. 16

    Si el valor almacenado en long sec es menor o igual luego Integer.MAX_VALUE puedes lanzar a int:

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

    Si el valor es menor o igual Long.MAX_VALUE /1000 entonces usted puede convertir los segundos a milisegundos y utilizar un enfoque diferente:

    cal.setTimeInMillis(cal.getTimeInMillis() + (sec*1000));
    Me puse el máximo permitido de Fecha ‘de Largo.MAX_VALUE / 1000’, que es más que suficiente y se utiliza cal.setTimeInMillis(cal.getTimeInMillis() + (sec*1000));

    OriginalEl autor Andreas_D

  2. 7

    Si los segundos’ de largo valor no es demasiado grande para caber en un entero, elenco.

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

    Pero yo le aconsejamos que utilice joda tiempo en lugar de la java API de calendario.

    OriginalEl autor jvdneste

  3. 1

    Convertir los segundos, por ejemplo, días dividiendo por 86400, a continuación, agregue los días y los segundos restantes. Usted necesitará para esta elegantemente, ya que incluso después de dividir por 86400 el resultado puede ser más grande que un int.

    Otra forma es convertir el calendario para milisegundos con getMillisOf(), agregar el valor que desee, a continuación, establezca con setTimeInMillis(). Esto es más simple y con muy poco riesgo de cometer un error, sólo recuerde para convertir tu segundos a milisegundos.

    OriginalEl autor Oren Shalev

  4. 0

    Afaik el calendario almacena los valores como enteros internamente, por lo que no hay manera de encajar mucho en ella. Me corrija si estoy equivocado, pero eso es lo que he leído de Java calendario. Usted debe convertir tu segundos a días o así para conseguir lo que quieres.

    OriginalEl autor InsertNickHere

  5. 0

    si su número es grande,
    una idea es que lo hagas en el REMOLQUE TIEMPO de agregar()

    MaxInt:  2147483647
    MaxLong: 9223372036854775807

    por lo tanto

    cal.add(Calendar.SECOND, secs / 1000000000);
    cal.add(Calendar.SECOND, secs % 1000000000);

    OriginalEl autor Mohammad Roshani

Dejar respuesta

Please enter your comment!
Please enter your name here