2017-04-10 1 views
1

J'ai besoin d'obtenir l'heure actuelle plusieurs fois dans une application Android. Je me demandais si l'appel Calendar.getInstance() était la meilleure implémentation, ou à la place, je pourrais mettre à jour l'instance donnée (en quelque sorte) et la rendre plus rapide et moins coûteuse (calcul).Appel Calendar.getInstance() plusieurs fois efficace?

Y a-t-il un moyen de mettre à jour l'instance Calendar? Est-ce plus rapide?

Merci.

+0

'Calendrier. getInstance() 'renvoie un objet initialisé avec l'heure et la date actuelles. Si vous le souhaitez, vous pouvez continuer à utiliser cette instance et définir l'heure et la date sur cette instance si nécessaire. –

+0

Avez-vous vraiment besoin de l'instance 'Calendar'? Pourquoi ne pas utiliser 'System.currentTimeMillis()' à la place? –

+0

@NielsMasdorp Thing est, comment puis-je mettre à jour l'instance 'Calendar' sans appeler' Calendar.getInstance() ' – JonZarate

Répondre

2

Si vous avez juste besoin de temps, vous pouvez l'obtenir en tant que System.currentTimeMillis(). Si vous avez besoin des fonctionnalités Calendar, pas besoin d'appeler Calendar.getInstance() à chaque fois. Au lieu de cela, vous pouvez utiliser existante Calendar référence, et le mettre à jour en définissant l'heure actuelle, comme

calendar.setTimeInMillis(System.currentTimeMillis()); 
0

Je vous recommande d'utiliser l'une des ci-dessous au lieu de créer beaucoup de nouvelles instances de calendrier.

System.currentTimeMillis() 

System.nanoTime() 

Si vous avez besoin d'une version lisible de l'heure actuelle, vous pouvez alors utiliser une instance de calendrier pour convertir le résultat currentTimeMillis (Long), comme ci-dessous

Long l = 1491812989036L; 

Calendar cal = Calendar.getInstance(); 
cal.setTimeInMillis(l); 

System.out.println("year: " + cal.get(Calendar.YEAR)); 
System.out.println("month: " + cal.get(Calendar.MONTH)); 
System.out.println("day: " + cal.get(Calendar.DAY_OF_MONTH));