Отображение текущего времени и даты в приложении Android


Ответы:


302

Ладно, не так сложно, так как есть несколько способов сделать это. Я предполагаю, что вы хотите поместить текущую дату и время в TextView.

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

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

Более подробную информацию можно найти в документации, которую легко найти здесь . Там вы найдете больше информации о том, как изменить формат, используемый для конвертации.


43
Пожалуйста - будьте более явными! В чем ошибка? Вы импортировали неправильный класс DateFormat? Это java.text.DateFormatи НЕ android.text.format.DateFormat! И это java.util.Dateи нет java.sql.Date! Просто небольшой намек на задаваемые вопросы: постарайтесь быть точным, например: заявите, что вы подразумеваете под «показом» в своем вопросе. И когда вы печатаете в моих строках - и Date, и DateFormat, конечно, должны быть импортированы - если есть выбор 2 для каждого, минимум, что вы можете попробовать, это любая комбинация: это всего лишь 4!
Зордид

извините, сэр, у меня свидание, а не время. Точно так же мы можем получить время?
BIBEKRBARAL

28
Взгляните на developer.android.com/reference/java/text/SimpleDateFormat.html - там вы можете увидеть, как точно определить , кем вы хотите быть в вашей выходной строке. Например, для использования времени "HH:mm:ss"! Полностью:currentTimeString = new SimpleDateFormat("HH:mm:ss").format(new Date());
Zordid

2
Там же DateFormat.getTimeInstance()и DateFormat.getDateTimeInstance().
Феликс

Насколько это эффективно? Допустим, вам нужно получить время от метода постоянной стрельбы. Есть ли что-нибудь более эффективное, чем каждый раз создавать новый объект 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);
    }

}

введите описание изображения здесь


1
android.os.Build.VERSION.SDK_INT> = android.os.Build.VERSION_CODES.N (24).
Кангеар

Как объявить, SimpleDateFormatпотому что я получил не могу найти символ класса
Дубис

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){
                }
            }
    }
}

@ Плохо, эта функция поставляется с Android SDK, пока ваш класс расширяет активность
Карлос П

2
Я знаю, что это старый вопрос, но если кто-то найдет его в Google, как я, он должен знать, что методы Date.getX устарели.
Тоби

38

Очевидными вариантами отображения времени являются AnalogClockвид и DigitalClockвид .

Например, следующий макет:

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

Выглядит так:

Скриншот


4
Уважаемый сэр, я хочу отображать текущее время, используя setText.
BIBEKRBARAL

5
Я чувствую себя глупым дерьмом после прочтения этого очевидного ответа! Я реализовал свой собственный runnable, перевел его в режим ожидания на определенное количество времени и так далее, когда очевидным ответом был XML-one-liner! Большое спасибо (более года после вашего поста) :-)
dbm

6
В 2015 году он устарел, и вместо него рекомендуется использовать TextClock. :)
Evilripper

1
AnalogClock устарел на уровне API 23. А AnalogClock и DigitalClock показывают только текущее время, но не текущую дату.
Зафер

34

Если вы хотите одну строку кода:

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

Результат "2016-09-25 16:50:34"


23

Мое собственное рабочее решение:

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

Надеюсь это поможет!


Интересно, почему c.get (Calendar.MONTH) возвращает 5, если предположительно 6? Мое устройство имеет правильные настройки времени.
Крис

Ах да, но почему они должны это делать, когда другие переменные были точными. :)
Крис

1
Calendar 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. получить (Calendar.MINUTE); это прекрасно работает
user577732

20

Если вы хотите получить дату и время в определенном порядке, вы можете использовать

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

15

От том , как получить полную дату с правильным форматом?:

Пожалуйста, используйте

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

получить действительные форматы времени и даты в соответствии с текущими настройками пользователя (например, формат времени 12/24).

import android.text.format.DateFormat;

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

10

Вот код, который работал для меня. Пожалуйста, попробуйте это. Это простой метод, который требует времени и даты от системного вызова. Метод Datetime () везде, где вам нужно.

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

Использование:

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

Используйте в formattedDateкачестве вашего Stringзаполненного с датой.
В моем случае: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);

Это даст формат даты и времени, например 2010-05-24T18: 13: 00



6

Для отображения функции текущей даты:

Calendar c = Calendar.getInstance();

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

Вы должны хотеть импортировать

import java.text.SimpleDateFormat; импорт java.util.Calendar;

Вы должны хотеть использовать

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

5

Это даст текущую дату и время:

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

5

Просто скопируйте этот код и надеюсь, что он вам подходит.

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

Попробуйте следующий код:

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

Вы можете попробовать этот способ

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

2

Если вы хотите работать с датой / временем в Android, я рекомендую вам использовать ThreeTenABP, которая является версией java.time.*пакета (доступного начиная с API 26 для Android), поставляемого с Java 8, доступным в качестве замены для java.util.Dateи java.util.Calendar.

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

1
Проще говоря, я уверен, что вы имели в виду правильную вещь: java.time встроен из уровня API Android 26. ThreeTenABP - это то, что вы используете, чтобы получить практически те же функции на более низких уровнях API . Таким образом, код может работать как на низком, так и на высоком уровнях.
Оле В.В.

2
А поскольку речь шла об отображении даты и времени , для этой цели можно использовать, например, ZonedDateTimeвместо LocalDateа DateTimeFormatter.ofLocalizedDateTimeвместо ofLocalizedDate. В противном случае код будет таким же.
Оле В.В.

1

Для отображения текущей даты и времени при просмотре текста

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

Проверка полного кода Android - отображение текущей даты и времени в примере Android Studio с исходным кодом


0

Чтобы получить текущее время / дату, используйте следующий фрагмент кода:

Чтобы использовать время :

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

Чтобы использовать дату :

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

и ты в порядке.


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";
}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.