Visualizza l'ora e la data attuali in un'applicazione Android


Risposte:


302

Va bene, non così difficile in quanto ci sono diversi metodi per farlo. Presumo che tu voglia inserire la data e l'ora correnti in a TextView.

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

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

C'è altro da leggere nella documentazione che può essere facilmente trovato qui . Qui troverai ulteriori informazioni su come cambiare il formato utilizzato per la conversione.


43
Per favore, sii più esplicito! Qual è l'errore? Hai importato la classe DateFormat sbagliata? È java.text.DateFormate NON android.text.format.DateFormat! Ed è java.util.Datee NON java.sql.Date! Solo un piccolo suggerimento per porre domande: cerca di essere preciso, ad esempio: dichiara cosa intendi per "visualizzare" nella tua domanda. E quando scrivi le mie righe - sia Date che DateFormat devono, ovviamente, essere importate - se c'è una scelta di 2 per ognuna, il minimo che puoi provare è qualsiasi combinazione: sono solo 4!
Zordid,

scusate signore, ho la data non l'ora. Allo stesso modo possiamo avere tempo?
BIBEKRBARAL,

28
Dai un'occhiata a developer.android.com/reference/java/text/SimpleDateFormat.html - qui puoi vedere come definire esattamente ciò che vuoi essere nella tua stringa di output. Ad esempio per il tempo "HH:mm:ss"! Completamente:currentTimeString = new SimpleDateFormat("HH:mm:ss").format(new Date());
Zordid,

2
C'è anche DateFormat.getTimeInstance()e DateFormat.getDateTimeInstance().
Felix,

Quanto è efficiente questo? Diciamo che è necessario ottenere il tempo da un metodo di sparo costante. C'è qualcosa di più efficiente della creazione di un nuovo oggetto Date ogni volta?
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);
    }

}

inserisci qui la descrizione dell'immagine


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

Come dichiarare SimpleDateFormatperché non ho trovato la classe dei simboli
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 questa funzione viene fornita con l'SDK Android fino a quando la tua classe estende l'attività
Carlos P

2
So che questa è una vecchia domanda, ma se qualcuno lo troverà su Google come me, dovrebbe sapere che i metodi Date.getX sono obsoleti.
tobi,

38

Le scelte ovvie per visualizzare l'ora sono la AnalogClockvista e la DigitalClockvista .

Ad esempio, il seguente layout:

<?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>

Somiglia a questo:

immagine dello schermo


4
caro signore, voglio visualizzare l'ora corrente usando setText.
BIBEKRBARAL,

5
Mi sento una stupida merda dopo aver letto questa ovvia risposta! Ho implementato il mio runnable, mettendolo in pausa per un determinato periodo di tempo e così via quando la risposta ovvia era un XML-one-liner! Mille grazie (più di un anno dopo il tuo post) :-)
dbm

6
Nel 2015 è obsoleto e si consiglia invece di utilizzare TextClock. :)
Evilripper,

1
AnalogClock è obsoleto nel livello API 23. AnalogClock e DigitalClock mostrano solo l'ora corrente, ma non la data corrente.
Zafer

34

Nel caso in cui desideri una singola riga di codice:

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

Il risultato è "2016-09-25 16:50:34"


23

La mia soluzione di lavoro:

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);

Spero che questo ti aiuti!


Mi chiedo perché c.get (Calendar.MONTH) restituisca 5 quando si suppone che sia 6? Il mio dispositivo ha le impostazioni dell'ora corrette.
Kris,

Oh sì, ma perché devono farlo quando le altre variabili erano accurate. :)
Kris,

1
Calendario c = Calendar.getInstance (); int month = 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. ottenere (Calendar.MINUTE); che funziona bene
user577732

20

Se si desidera ottenere la data e l'ora secondo uno schema specifico, è possibile utilizzare

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

15

Da Come ottenere la data completa con il formato corretto? :

Si prega di utilizzare

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

per ottenere formati di data e ora validi nel senso delle attuali impostazioni dell'utente (formato di ora 12/24, ad esempio).

import android.text.format.DateFormat;

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

10

Ecco il codice che ha funzionato per me. Per favore, prova questo. È un metodo semplice che richiede ora e data da una chiamata di sistema. Il metodo Datetime () di cui hai bisogno.

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

Uso:

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()); 

Usa formattedDatecome Stringriempito con la data.
Nel mio caso: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);

Ciò fornirà il formato della data e dell'ora come 2010-05-24T18: 13: 00



6

Per visualizzare la funzione data corrente:

Calendar c = Calendar.getInstance();

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

Devi importare

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

Devi voler usare

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

5

Ciò darebbe la data e l'ora correnti:

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

5

Copia semplicemente questo codice e spera che funzioni bene per te.

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

Prova il codice seguente:

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

Puoi provare in questo modo

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

2

Se desideri lavorare con data / ora in Android ti consiglio di usare ThreeTenABP che è una versione del java.time.*pacchetto (disponibile a partire da API 26 su Android) fornito con Java 8 disponibile in sostituzione di java.util.Datee java.util.Calendar.

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

1
Giusto per dirlo, sono sicuro che intendevi la cosa giusta: java.time è integrato dal livello API 26 di Android. ThreeTenABP è ciò che usi per ottenere praticamente la stessa funzionalità a livelli API inferiori . Quindi il codice può funzionare sia a livelli bassi che alti.
Ole VV,

2
E poiché la domanda riguardava la visualizzazione della data e dell'ora , a tale scopo si può usare ad esempio un ZonedDateTimeanziché LocalDatee DateTimeFormatter.ofLocalizedDateTimeinvece di ofLocalizedDate. Altrimenti il ​​codice sarà lo stesso.
Ole VV,

1

Per Mostra data e ora correnti su 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);

Controlla il codice Android completo : visualizza la data e l'ora correnti in un esempio di Android Studio con codice sorgente


0

Per ottenere l' ora / la data attuali basta usare il seguente frammento di codice:

Per usare il tempo :

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

Per usare la data :

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

e sei a posto.


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";
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.