Question Obtenir l'heure et la date sur Android


Comment puis-je obtenir l'heure et la date actuelles dans une application Android?


890
2018-03-20 16:12


origine


Réponses:


Vous pouvez utiliser:

import java.util.Calendar

Date currentTime = Calendar.getInstance().getTime();

Il y a beaucoup de constantes dans le calendrier pour tout ce dont vous avez besoin.

Modifier:
  Vérifier Documentation de classe de calendrier


1067
2018-03-20 16:27



Vous pouvez (mais ne devrait plus - voir ci-dessous!) utiliser android.text.format.Time:

Time now = new Time();
now.setToNow();

De la référence liée ci-dessus:

La classe Time est un remplacement plus rapide   pour le java.util.Calendar et   classes java.util.GregorianCalendar.   Une instance de la classe Time   représente un moment dans le temps, spécifié   avec une deuxième précision.


NOTE 1: Cela fait plusieurs années que j'ai écrit cette réponse, et il s'agit d'une classe ancienne, spécifique à Android et désormais obsolète. Google maintenant dit cette "[a] sa classe a un certain nombre de problèmes et il est recommandé que Calendrier Grégorien est utilisé à la place ".


NOTE 2: Même si le Time classe a toMillis(ignoreDaylightSavings) méthode, c'est simplement une commodité de passer aux méthodes qui attendent du temps en millisecondes. La valeur de temps est seulement précis à une seconde; la partie en millisecondes est toujours 000. Si dans une boucle vous faites

Time time = new Time();   time.setToNow();
Log.d("TIME TEST", Long.toString(time.toMillis(false)));
... do something that takes more than one millisecond, but less than one second ...

La séquence résultante répétera la même valeur, telle que 1410543204000, jusqu'à la prochaine seconde a commencé, à quel moment 1410543205000 va commencer à répéter.


474
2018-03-20 16:17



Si vous souhaitez obtenir la date et l'heure dans un modèle spécifique, vous pouvez utiliser ce qui suit:

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
String currentDateandTime = sdf.format(new Date());

288
2018-01-18 17:44



Pour ceux qui préfèrent un format personnalisé, vous pouvez utiliser:

DateFormat df = new SimpleDateFormat("EEE, d MMM yyyy, HH:mm");
String date = df.format(Calendar.getInstance().getTime());

Alors que vous pouvez avoir des modèles DateFormat tels que:

"yyyy.MM.dd G 'at' HH:mm:ss z" ---- 2001.07.04 AD at 12:08:56 PDT
"hh 'o''clock' a, zzzz" ----------- 12 o'clock PM, Pacific Daylight Time
"EEE, d MMM yyyy HH:mm:ss Z"------- Wed, 4 Jul 2001 12:08:56 -0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"------- 2001-07-04T12:08:56.235-0700
"yyMMddHHmmssZ"-------------------- 010704120856-0700
"K:mm a, z" ----------------------- 0:08 PM, PDT
"h:mm a" -------------------------- 12:08 PM
"EEE, MMM d, ''yy" ---------------- Wed, Jul 4, '01

188
2017-12-18 02:42



En fait, il est plus sûr de définir le fuseau horaire actuel sur l'appareil avec Time.getCurrentTimezone(), sinon vous obtiendrez l'heure actuelle en UTC.

Time today = new Time(Time.getCurrentTimezone());
today.setToNow();

Ensuite, vous pouvez obtenir tous les champs de date que vous voulez, par exemple:

textViewDay.setText(today.monthDay + "");             // Day of the month (1-31)
textViewMonth.setText(today.month + "");              // Month (0-11)
textViewYear.setText(today.year + "");                // Year 
textViewTime.setText(today.format("%k:%M:%S"));  // Current time

Voir android.text.format.Time classe pour tous les détails.

METTRE À JOUR

Comme beaucoup de personnes le soulignent, Google affirme que cette classe a un certain nombre de problèmes et qu'elle n'est plus censée être utilisée:

Cette classe a un certain nombre de problèmes et il est recommandé   GregorianCalendar est utilisé à la place.

Problèmes connus:

Pour des raisons historiques lors de l'exécution des calculs de temps tous   l'arithmétique a actuellement lieu en utilisant des entiers de 32 bits. Cela limite   la plage de temps fiable représentable de 1902 à 2037.Voir le   article wikipedia sur le problème de l'année 2038 pour plus de détails. Ne comptez pas sur   Ce comportement; cela pourrait changer dans le futur. Appel   switchTimezone (String) sur une date qui ne peut pas exister, comme un mur   temps qui a été sauté en raison d'une transition de l'heure d'été, entraînera une date   en 1969 (c'est-à-dire -1 ou 1 seconde avant le 1er janvier 1970 UTC). Une grande partie de la   le formatage / l'analyse prend en charge le texte ASCII et ne convient donc pas   pour une utilisation avec des scripts non-ASCII.


119
2018-02-11 14:02



Pour la date et l'heure actuelles, utilisez:

String mydate = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());

Quelles sorties:

Feb 27, 2012 5:41:23 PM

73
2018-02-27 12:16



Pour trouver l'heure actuelle, vous pouvez utiliser System.currentTimeMillis() ce qui est standard en Java. Ensuite, vous pouvez l'utiliser pour créer une date

Date currentDate = new Date(System.currentTimeMillis());

Et comme mentionné par d'autres pour créer un temps

Time currentTime = new Time();
currentTime.setToNow();

46
2017-10-25 23:07



Essayez de cette façon Tous les formats sont donnés ci-dessous pour obtenir le format de la date et de l'heure.

    Calendar c = Calendar.getInstance();
    SimpleDateFormat dateformat = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss aa");
    String datetime = dateformat.format(c.getTime());
    System.out.println(datetime);

first

second third


46
2017-12-17 06:58



Vous pouvez utiliser le code:

Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String strDate = sdf.format(c.getTime());

Sortie:

2014-11-11 00:47:55

Vous obtenez également d'autres options de formatage pour SimpleDateFormat de ici.


34
2017-11-10 19:10



Facile, vous pouvez disséquer le temps d'obtenir des valeurs séparées pour l'heure actuelle, comme suit:

Calendar cal = Calendar.getInstance(); 

  int millisecond = cal.get(Calendar.MILLISECOND);
  int second = cal.get(Calendar.SECOND);
  int minute = cal.get(Calendar.MINUTE);
        //12 hour format
  int hour = cal.get(Calendar.HOUR);
        //24 hour format
  int hourofday = cal.get(Calendar.HOUR_OF_DAY);

Idem pour la date, comme suit:

Calendar cal = Calendar.getInstance(); 

  int dayofyear = cal.get(Calendar.DAY_OF_YEAR);
  int year = cal.get(Calendar.YEAR);
  int dayofweek = cal.get(Calendar.DAY_OF_WEEK);
  int dayofmonth = cal.get(Calendar.DAY_OF_MONTH);

29
2017-11-13 16:11