Mostrar la hora y fecha actuales en una aplicación de Android

Respuestas:

302

De acuerdo, no es tan difícil ya que hay varios métodos para hacer esto. Supongo que desea poner la fecha y hora actual en a TextView.

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

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

Hay más para leer en la documentación que se puede encontrar fácilmente aquí . Allí encontrará más información sobre cómo cambiar el formato utilizado para la conversión.

Zordid
fuente
43
¡Por favor, sea más explícito! Cual es el error ¿Importó la clase DateFormat incorrecta? Es java.text.DateFormaty NO android.text.format.DateFormat! Y es java.util.Datey NO java.sql.Date! Solo una pequeña pista para hacer preguntas: trate de ser preciso, por ejemplo: declare lo que quiere decir con "mostrar" en su pregunta. Y cuando escribe mis líneas, tanto Date como DateFormat deben importarse, por supuesto, si hay una opción de 2 para cada uno, lo menos que puede probar es cualquier combinación: ¡son solo 4!
Zordid
lo siento señor, tengo fecha, no hora. de manera similar, ¿podemos tener tiempo?
BIBEKRBARAL
28
Eche un vistazo a developer.android.com/reference/java/text/SimpleDateFormat.html : allí puede ver cómo definir exactamente lo que desea que sea en su cadena de salida. Por ejemplo, para el uso del tiempo "HH:mm:ss"! Completamente:currentTimeString = new SimpleDateFormat("HH:mm:ss").format(new Date());
Zordid
2
También hay DateFormat.getTimeInstance()y DateFormat.getDateTimeInstance().
Felix
¿Qué tan eficiente es esto? Digamos que necesita obtener tiempo de un método de disparo constante. ¿Hay algo más eficiente que crear un nuevo objeto Date cada vez?
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);
    }

}

ingrese la descripción de la imagen aquí


fuente
1
android.os.Build.VERSION.SDK_INT> = android.os.Build.VERSION_CODES.N (24).
kangear
Cómo declarar SimpleDateFormatporque no puedo encontrar la clase de símbolo
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){
                }
            }
    }
}
Prasante
fuente
@Harshit, esta función viene con el SDK de Android siempre que su clase amplíe Actividad
Carlos P
2
Sé que esta es una pregunta antigua, pero si alguien la encuentra en Google como yo, debería saber que los métodos Date.getX están en desuso.
tobi
38

Las opciones obvias para mostrar la hora son la AnalogClockVista y la DigitalClockVista .

Por ejemplo, el siguiente diseño:

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

Se ve como esto:

captura de pantalla

Dave Webb
fuente
44
Estimado señor, quiero mostrar la hora actual usando setText.
BIBEKRBARAL
55
¡Me siento como una estúpida mierda después de leer esta respuesta obvia! ¡Implementé mi propio ejecutable, lo puse a dormir durante un período de tiempo determinado y así sucesivamente cuando la respuesta obvia fue un XML-one-liner! Muchas gracias (más de un año después de su publicación) :-)
dbm
66
En 2015 está en desuso y se recomienda usar TextClock en su lugar. :)
Evilripper
1
AnalogClock está en desuso en el nivel 23 de API y AnalogClock y DigitalClock solo muestran la hora actual, pero no la fecha actual.
Zafer
34

En caso de que desee una sola línea de código:

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

El resultado es "2016-09-25 16:50:34"

Mahdi Astanei
fuente
23

Mi propia solución de trabajo:

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

¡Espero que esto ayude!

Fred
fuente
Me pregunto por qué c.get (Calendar.MONTH) devuelve 5 cuando supuestamente es 6. Mi dispositivo tiene la configuración de hora correcta.
Kris
Ah, sí, pero ¿por qué tienen que hacer eso cuando las otras variables son precisas? :)
Kris
1
Calendario c = Calendar.getInstance (); int mes = c.get (Calendar.MONTH) + 1; Cadena sDate = mes + "-" + c.get (Calendar.DAY_OF_MONTH) + "-" + c.get (Calendar.YEAR) + "-" + c.get (Calendar.HOUR_OF_DAY) + ":" + c. obtener (Calendar.MINUTE); eso funciona bien
user577732 01 de
20

Si desea obtener la fecha y la hora en un patrón específico, puede usar

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

De Como llegar fecha completa con el formato correcto? :

Por favor use

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

para obtener formatos de fecha y hora válidos en el sentido de la configuración actual del usuario (formato de hora 12/24, por ejemplo).

import android.text.format.DateFormat;

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

Aquí está el código que funcionó para mí. Por favor intente esto. Es un método simple que toma tiempo y fecha de una llamada al sistema. El método Datetime () donde lo necesite.

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
fuente
9

Utilizar:

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
fuente
7
String formattedDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime()); 

Use formattedDatecomo su Stringllenado con la fecha.
En mi caso:mDateButton.setText(formattedDate);

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

Esto dará formato de fecha y hora como 2010-05-24T18: 13: 00

Thomas VJ
fuente
6

Para mostrar la función de fecha actual:

Calendar c = Calendar.getInstance();

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

Debes querer importar

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

Debes querer usar

TextView Date;
Date = (TextView) findViewById(R.id.Date);
Habeeb Rahman kalathil
fuente
5

Esto daría la fecha y hora actuales:

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

Simplemente copie este código y espero que esto funcione bien para usted.

Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("dd:MMMM:yyyy HH:mm:ss a");
String strDate = sdf.format(c.getTime());
Parth Bhayani
fuente
3
String currentDateandTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
Toast.makeText(getApplicationContext(), currentDateandTime, Toast.LENGTH_SHORT).show();
Jaydev
fuente
3

Prueba el siguiente código:

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
fuente
3

Puedes intentarlo de esta manera

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

Si desea trabajar con fecha / hora en Android, le recomiendo que use ThreeTenABP, que es una versión del java.time.*paquete (disponible a partir de API 26 en Android) que se envía con Java 8 disponible como reemplazo para java.util.Datey java.util.Calendar.

LocalDate localDate = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM);
String date = localDate.format(formatter);
textView.setText(date);
código de sutuion
fuente
1
Solo para aclararlo, estoy seguro de que quiso decir lo correcto: java.time está integrado desde el nivel 26 de la API de Android. ThreeTenABP es lo que usa para obtener prácticamente la misma funcionalidad en los niveles de API más bajos . Por lo tanto, el código puede funcionar tanto en niveles bajos como altos.
Ole VV
2
Y dado que la pregunta era sobre mostrar la fecha y la hora , para ese propósito se puede usar, por ejemplo, un en ZonedDateTimelugar de LocalDatey en DateTimeFormatter.ofLocalizedDateTimelugar de ofLocalizedDate. De lo contrario, el código será el mismo.
Ole VV
1

Para Mostrar fecha y hora actuales en la vista de texto

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

Verifique el código completo de Android: muestre la fecha y hora actuales en un ejemplo de Android Studio con código fuente

Dharmendra Mishra
fuente
0

Para obtener la hora / fecha actual solo use el siguiente fragmento de código:

Para usar el tiempo :

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

Para usar la fecha :

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

y eres bueno para ir

Pankaj Lilan
fuente
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
fuente