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

202

Comment afficher la date et l'heure actuelles dans une application Android?

BIBEKRBARAL
la source

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.

Zordid
la source
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


la source
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){
                }
            }
    }
}
Prashant
la source
@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

Dave Webb
la source
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"

Mahdi Astanei
la source
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!

Fred
la source
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());
Nam Vu
la source
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()));
}
wonder.mice
la source
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;
}
vinoth
la source
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);
Joy Panchal
la source
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);

Bart
la source
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

Thomas VJ
la source
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);
Habeeb Rahman kalathil
la source
5

Cela donnerait la date et l'heure actuelles:

public String getCurrDate()
{
    String dt;
    Date cal = Calendar.getInstance().getTime();
    dt = cal.toLocaleString();
    return dt;
}
chétan
la source
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());
Parth Bhayani
la source
3
String currentDateandTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
Toast.makeText(getApplicationContext(), currentDateandTime, Toast.LENGTH_SHORT).show();
Jaydev
la source
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);
duggu
la source
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());
Muhaiminur Rahman
la source
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);
sutuioncode
la source
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

Dharmendra Mishra
la 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.

Pankaj Lilan
la source
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";
}
pruthwiraj.kadam
la source