Java instantanée rond jusqu'à la prochaine seconde

ryanp102694:

Utilisation de la classe Java instantanée, comment puis-je arrondir à la seconde près? Je ne me soucie pas si elle est de 1 milliseconde, 15 millisecondes ou 999 millisecondes, tout devrait arrondir à la seconde suivante avec 0 millisecondes.

Je veux essentiellement,

Instant myInstant = ...

myInstant.truncatedTo(ChronoUnit.SECONDS);

mais dans la direction opposée.

Nexevis:

Vous pouvez couvrir le cas d'angle à l'aide .getNanopour vous assurer que le temps est pas exactement même sur la seconde, puis ajoutez la deuxième en utilisant .plusSeconds()quand il y a une valeur à tronquer.

    Instant myInstant = Instant.now();
    if (myInstant.getNano() > 0) //Checks for any nanoseconds for the current second (this will almost always be true)
    {
        myInstant = myInstant.truncatedTo(ChronoUnit.SECONDS).plusSeconds(1);
    }
    /* else //Rare case where nanoseconds are exactly 0
    {
        myInstant = myInstant;
    } */

Je suis parti dans la elsedéclaration que vient de démontrer aucune opération doivent faire si elle est exactement 0 nanosecondes, parce qu'il n'y a aucune raison de ne rien troncature.

EDIT: Si vous voulez vérifier si le temps est d' au moins 1 milliseconde sur une seconde pour tour d' horizon, au lieu de 1 nanoseconde vous pouvez le comparer à 1000000 nanosecondes mais laisser la elsedéclaration tronquer les nanosecondes:

    Instant myInstant = Instant.now();
    if (myInstant.getNano() > 1000000) //Nano to milliseconds
    {
        myInstant = myInstant.truncatedTo(ChronoUnit.SECONDS).plusSeconds(1);
    }
    else
    {
        myInstant = myInstant.truncatedTo(ChronoUnit.SECONDS); //Must truncate the nanoseconds off since we are comparing to milliseconds now.
    }

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=230236&siteId=1
conseillé
Classement