Afficher l'heure et la date actuelles dans une application Android


Réponses:


302

D'accord, pas si difficile car il existe plusieurs méthodes pour le faire. Je suppose que vous voulez mettre la date et l'heure actuelles dans un fichier TextView.

String currentDateTimeString = java.text.DateFormat.getDateTimeInstance().format(new Date());

// textView is the TextView view that should display it
textView.setText(currentDateTimeString);

Il y a plus à lire dans la documentation qui peut être facilement trouvée ici . Vous y trouverez plus d'informations sur la façon de changer le format utilisé pour la conversion.


43
S'il vous plaît - soyez plus explicite! Quelle est l'erreur? Avez-vous importé la mauvaise classe DateFormat? C'est java.text.DateFormatet NON android.text.format.DateFormat! Et c'est java.util.Dateet NON java.sql.Date! Juste un petit indice pour poser des questions: essayez d'être précis, par exemple: déclarez ce que vous entendez par «afficher» dans votre question. Et lorsque vous tapez mes lignes - Date et DateFormat doivent bien sûr être importés - s'il y a un choix de 2 pour chacune, le moins que vous puissiez essayer est n'importe quelle combinaison: c'est juste 4!
Zordid

désolé monsieur, j'ai la date et non l'heure. De même, pouvons-nous avoir du temps?
BIBEKRBARAL

28
Jetez un œil à developer.android.com/reference/java/text/SimpleDateFormat.html - là, vous pouvez voir comment définir exactement ce que vous voulez être dans votre chaîne de sortie. Par exemple pour l'utilisation du temps "HH:mm:ss"! Complètement:currentTimeString = new SimpleDateFormat("HH:mm:ss").format(new Date());
Zordid

2
Il y a aussi DateFormat.getTimeInstance()et DateFormat.getDateTimeInstance().
Felix

Est-ce efficace? Disons que vous devez obtenir du temps à partir d'une méthode de tir en permanence. Existe-t-il quelque chose de plus efficace que de créer à chaque fois un nouvel objet Date?
keshav.bahadoor

125
public class XYZ extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.main);

        Calendar c = Calendar.getInstance();
        System.out.println("Current time => "+c.getTime());

        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String formattedDate = df.format(c.getTime());
        // formattedDate have current date/time
        Toast.makeText(this, formattedDate, Toast.LENGTH_SHORT).show();


      // Now we display formattedDate value in TextView
        TextView txtView = new TextView(this);
        txtView.setText("Current Date and Time : "+formattedDate);
        txtView.setGravity(Gravity.CENTER);
        txtView.setTextSize(20);
        setContentView(txtView);
    }

}

entrez la description de l'image ici


1
android.os.Build.VERSION.SDK_INT> = android.os.Build.VERSION_CODES.N (24).
kangear

Comment déclarer SimpleDateFormatparce que j'ai obtenu ne peut pas trouver de classe de symboles
dubis

51
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);
    Thread myThread = null;

    Runnable runnable = new CountDownRunner();
    myThread= new Thread(runnable);   
    myThread.start();

}

public void doWork() {
    runOnUiThread(new Runnable() {
        public void run() {
            try{
                TextView txtCurrentTime= (TextView)findViewById(R.id.lbltime);
                    Date dt = new Date();
                    int hours = dt.getHours();
                    int minutes = dt.getMinutes();
                    int seconds = dt.getSeconds();
                    String curTime = hours + ":" + minutes + ":" + seconds;
                    txtCurrentTime.setText(curTime);
            }catch (Exception e) {}
        }
    });
}


class CountDownRunner implements Runnable{
    // @Override
    public void run() {
            while(!Thread.currentThread().isInterrupted()){
                try {
                doWork();
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                        Thread.currentThread().interrupt();
                }catch(Exception e){
                }
            }
    }
}

@Harshit cette fonction est livrée avec le SDK Android tant que votre classe étend l'activité
Carlos P

2
Je sais que c'est une vieille question, mais si quelqu'un la trouve dans google comme moi, il devrait savoir que les méthodes Date.getX sont obsolètes.
tobi

38

Les choix évidents pour afficher l'heure sont la AnalogClockvue et la DigitalClockvue .

Par exemple, la disposition suivante:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:orientation="vertical">

    <AnalogClock
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"/>

    <DigitalClock 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:gravity="center" 
        android:textSize="20sp"/>
</LinearLayout>

Ressemble à ça:

capture d'écran


4
cher monsieur, je veux afficher l'heure actuelle en utilisant setText.
BIBEKRBARAL

5
Je me sens comme une merde stupide après avoir lu cette réponse évidente! J'ai implémenté mon propre exécutable, le mettant en veille pendant un certain temps et ainsi de suite lorsque la réponse évidente était un XML-one-liner! Merci beaucoup (plus d'un an après votre publication) :-)
dbm

6
En 2015, il est obsolète et il est recommandé d'utiliser plutôt TextClock. :)
Evilripper

1
AnalogClock est obsolète au niveau de l'API 23. et AnalogClock et DigitalClock affichent uniquement l'heure actuelle, mais pas la date actuelle.
Zafer

34

Si vous souhaitez une seule ligne de code:

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

Le résultat est "2016-09-25 16:50:34"


23

Ma propre solution de travail:

Calendar c = Calendar.getInstance();

String sDate = c.get(Calendar.YEAR) + "-" 
+ c.get(Calendar.MONTH)
+ "-" + c.get(Calendar.DAY_OF_MONTH) 
+ " at " + c.get(Calendar.HOUR_OF_DAY) 
+ ":" + c.get(Calendar.MINUTE);

J'espère que cela t'aides!


Je me demande pourquoi c.get (Calendar.MONTH) renvoie 5 alors qu'il est censé être 6? Mon appareil a des paramètres d'heure corrects.
Kris

Oh oui, mais pourquoi doivent-ils le faire alors que les autres variables sont exactes. :)
Kris

1
Calendrier c = Calendar.getInstance (); int mois = c.get (Calendar.MONTH) + 1; String sDate = month + "-" + c.get (Calendar.DAY_OF_MONTH) + "-" + c.get (Calendar.YEAR) + "-" + c.get (Calendar.HOUR_OF_DAY) + ":" + c. get (Calendar.MINUTE); qui fonctionne bien
user577732

20

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

Date d = new Date();
CharSequence s = DateFormat.format("yyyy-MM-dd hh:mm:ss", d.getTime());

15

De Comment obtenir la date complète avec le format correct?:

Veuillez utiliser

android.text.format.DateFormat.getDateFormat(Context context)
android.text.format.DateFormat.getTimeFormat(Context context)

pour obtenir des formats d'heure et de date valides dans le sens des paramètres utilisateur actuels (format d'heure 12/24, par exemple).

import android.text.format.DateFormat;

private void some() {
    final Calendar t = Calendar.getInstance();
    textView.setText(DateFormat.getTimeFormat(this/*Context*/).format(t.getTime()));
}

10

Voici le code qui a fonctionné pour moi. Veuillez essayer ceci. Il s'agit d'une méthode simple qui prend l'heure et la date d'un appel système. La méthode Datetime () où vous en avez besoin.

public static String Datetime()
{
    Calendar c = Calendar .getInstance();
    System.out.println("Current time => "+c.getTime());
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mms");
    formattedDate = df.format(c.getTime());
    return formattedDate;
}

9

Utilisation:

Calendar c = Calendar.getInstance();

int seconds = c.get(Calendar.SECOND);
int minutes = c.get(Calendar.MINUTE);
int hour = c.get(Calendar.HOUR);
String time = hour + ":" + minutes + ":" + seconds;


int day = c.get(Calendar.DAY_OF_MONTH);
int month = c.get(Calendar.MONTH);
int year = c.get(Calendar.YEAR);
String date = day + "/" + month + "/" + year;

// Assuming that you need date and time in a separate
// textview named txt_date and txt_time.

txt_date.setText(date);
txt_time.setText(time);

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

Utilisez formattedDatecomme votre Stringrempli avec la date.
Dans mon cas:mDateButton.setText(formattedDate);


6
Calendar c = Calendar.getInstance();
int month=c.get(Calendar.MONTH)+1;
String sDate = c.get(Calendar.YEAR) + "-" + month+ "-" + c.get(Calendar.DAY_OF_MONTH) +
"T" + c.get(Calendar.HOUR_OF_DAY)+":"+c.get(Calendar.MINUTE)+":"+c.get(Calendar.SECOND);

Cela donnera un format d'heure de date comme 2010-05-24T18: 13: 00



6

Pour afficher la fonction de date actuelle:

Calendar c = Calendar.getInstance();

SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy");
String date = df.format(c.getTime());
Date.setText(date);

Vous devez vouloir importer

import java.text.SimpleDateFormat; import java.util.Calendar;

Vous devez vouloir utiliser

TextView Date;
Date = (TextView) findViewById(R.id.Date);

5

Cela donnerait la date et l'heure actuelles:

public String getCurrDate()
{
    String dt;
    Date cal = Calendar.getInstance().getTime();
    dt = cal.toLocaleString();
    return dt;
}

5

Copiez simplement ce code et espérez que cela fonctionne bien pour vous.

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

3
String currentDateandTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
Toast.makeText(getApplicationContext(), currentDateandTime, Toast.LENGTH_SHORT).show();

3

Essayez le code ci-dessous:

SimpleDateFormat dateFormat = new SimpleDateFormat(
                                    "yyyy/MM/dd HH:mm:ss");

Calendar cal = Calendar.getInstance();
System.out.println("time => " + dateFormat.format(cal.getTime()));

String time_str = dateFormat.format(cal.getTime());

String[] s = time_str.split(" ");

for (int i = 0; i < s.length; i++) {
     System.out.println("date  => " + s[i]);
}

int year_sys = Integer.parseInt(s[0].split("/")[0]);
int month_sys = Integer.parseInt(s[0].split("/")[1]);
int day_sys = Integer.parseInt(s[0].split("/")[2]);

int hour_sys = Integer.parseInt(s[1].split(":")[0]);
int min_sys = Integer.parseInt(s[1].split(":")[1]);

System.out.println("year_sys  => " + year_sys);
System.out.println("month_sys  => " + month_sys);
System.out.println("day_sys  => " + day_sys);

System.out.println("hour_sys  => " + hour_sys);
System.out.println("min_sys  => " + min_sys);

3

Vous pouvez essayer de cette façon

Calendar calendar = Calendar.getInstance();
SimpleDateFormat mdformat = new SimpleDateFormat("HH:mm:ss");
String strDate = "Current Time : " + mdformat.format(calendar.getTime());

2

Si vous souhaitez travailler avec la date / l'heure dans Android, je vous recommande d'utiliser ThreeTenABP qui est une version du java.time.*package (disponible à partir de l'API 26 sur Android) livrée avec Java 8 disponible en remplacement de java.util.Dateet java.util.Calendar.

LocalDate localDate = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM);
String date = localDate.format(formatter);
textView.setText(date);

1
Juste pour mettre les choses au clair, je suis sûr que vous vouliez dire la bonne chose: java.time est intégré à partir du niveau d'API Android 26. ThreeTenABP est ce que vous utilisez pour obtenir pratiquement la même fonctionnalité à des niveaux d'API inférieurs . Le code peut donc fonctionner à la fois sur des niveaux bas et élevés.
Ole VV

2
Et comme la question portait sur l'affichage de la date et de l'heure , à cette fin, on peut utiliser par exemple un ZonedDateTimeau lieu de LocalDateet DateTimeFormatter.ofLocalizedDateTimeau lieu de ofLocalizedDate. Sinon, le code sera le même.
Ole VV

1

Pour afficher la date et l'heure actuelles sur Textview

    /// For Show Date
    String currentDateString = DateFormat.getDateInstance().format(new Date());
    // textView is the TextView view that should display it
    textViewdate.setText(currentDateString);
    /// For Show Time
    String currentTimeString = DateFormat.getTimeInstance().format(new Date());
    // textView is the TextView view that should display it
    textViewtime.setText(currentTimeString);

Vérifier le code complet Android - Afficher la date et l'heure actuelles dans un exemple Android Studio avec le code source


0

Pour obtenir l' heure / la date actuelle, utilisez simplement l'extrait de code suivant:

Pour utiliser le temps :

SimpleDateFormat simpleDateFormatTime = new SimpleDateFormat("HH:mm", Locale.getDefault());
String strTime = simpleDateFormatTime.format(now.getTime());

Pour utiliser la date :

SimpleDateFormat simpleDateFormatDate = new SimpleDateFormat("E, MMM dd, yyyy", Locale.getDefault());    
String strDate = simpleDateFormatDate.format(now.getTime());

et vous êtes prêt à partir.


0
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
Calendar c = Calendar.getInstance();
Date date = Calendar.getInstance().getTime();
String sDate = format.format(date);//31-12-9999
int mYear = c.get(Calendar.YEAR);//9999
int mMonth = c.get(Calendar.MONTH);
mMonth = mMonth + 1;//12
int hrs = c.get(Calendar.HOUR_OF_DAY);//24
int min = c.get(Calendar.MINUTE);//59
String AMPM;
if (c.get(Calendar.AM_PM) == 0) {
    AMPM = "AM";
} else {
    AMPM = "PM";
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.