Mesure du temps écoulé en Java
Question :
Comment puis-je déterminer la durée entre deux points temporels en Java ? Plus précisément, je souhaite représenter startTime et endTime en tant que variables d'instance dans une classe et calculer leur différence dans une méthode getDuration(). Cependant, il y a une contrainte : je dois gérer les cas où startTime est postérieur à endTime tout en obtenant un résultat précis (par exemple, startTime = 23h00, endTime = 1h00, durée = 2h00).
Réponse :
Pour obtenir une mesure précise du temps en Java, vous devez utiliser System.nanoTime(). Contrairement à System.currentTimeMillis(), nanoTime est conçu spécifiquement pour mesurer le temps écoulé.
Explication :
System.currentTimeMillis() fournit un mur -l'heure de l'horloge, susceptible d'être ajustée et corrigée par le système. Cela conduit à des incohérences lors de la mesure du temps écoulé. En revanche, System.nanoTime() n'est pas affecté par ces corrections et propose une mesure précise des différences horaires, même si startTime dépasse endTime.
Pour implémenter cela dans votre classe :
public class Stream { private long startTime; private long endTime; public long getDuration() { return endTime - startTime; } // ... }
En utilisant System.nanoTime(), vous pouvez obtenir des calculs précis de durée, même lorsque vous gérez des intervalles de temps s'étendant sur minuit ou avec startTime se produisant après endTime.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!