Приведение и получение значений из средства выбора даты и времени в Android

У меня есть DatePicker и TimePicker в моем приложении. Может ли кто-нибудь сказать мне, как получить значения даты и времени, которые выбраны??? Я хочу сказать, что для EditText мы можем объявить как

final EditText name = (EditText) this.findViewById(R.id.nametext);

и мы можем преобразовать его данные, используя name.getText().toString().

Таким же образом, как мы можем получить значения DatePicker и TimePicker в строку???


person Rahul Kalidindi    schedule 07.04.2010    source источник


Ответы (7)


DatePicker имеет

getYear() 
getMonth() 
getDayOfMonth()

чтобы сделать объект Date из DatePicker, вы бы сделали new Date(datePicker.getYear() - 1900, datePicker.getMonth(), datePicker.getDayOfMonth());

Обратите внимание, что этот конструктор был устарело на уровне API 1 - пожалуйста, обратитесь к ответу andrescanavesi для более подходящего способа создания объекта Date.

TimePicker имеет

getCurrentHour()
getCurrentMinute()
person Jim Blackler    schedule 07.04.2010
comment
Можете ли вы привести пример??? я получаю сообщение об ошибке при инициализации объектов даты и времени - person Rahul Kalidindi; 07.04.2010
comment
@Jin Спасибо, Джин!! Найдено полезным - person Paresh Mayani; 26.11.2010
comment
А для тех, кто использует Joda, используйте new DateTime(datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth(), 0, 0) - person espinchi; 16.05.2014
comment
Хотя это допустимый способ получить дату, datePicker.getCalendarView().getDate(), вероятно, является более точным способом ответа на заданный вопрос; поэтому вы должны использовать его как new Date(datePicker.getCalendarView().getDate()). - person Matt Quigley; 26.05.2014
comment
В случае выбора времени я получаю час и минуту в виде целого числа. Итак, час — это integer, а минуты — это integer. Как получить объект даты для хранения времени? - person praxmon; 19.05.2015

Я использую это:

    /**
 * 
 * @param datePicker
 * @return a java.util.Date
 */
public static java.util.Date getDateFromDatePicket(DatePicker datePicker){
    int day = datePicker.getDayOfMonth();
    int month = datePicker.getMonth();
    int year =  datePicker.getYear();

    Calendar calendar = Calendar.getInstance();
    calendar.set(year, month, day);

    return calendar.getTime();
}
person Andrés Canavesi    schedule 29.01.2013
comment
Остерегайтесь, это фактически установит время возвращаемого Date на текущее время, а не на полночь. - person Matt Quigley; 26.05.2014
comment
Хороший метод. Но не могли бы вы добавить к нему код, связанный с TimePicker? Вопрос о DatePicker + TimePicker. - person naXa; 08.12.2014
comment
Добавьте это, чтобы включить часы и минуты из Timepicker calendar.set(Calendar.HOUR, expDate_hours); calendar.set(Календарь.МИНУТЫ, expDate_mins); где expDate_hours и _mins устанавливаются в onTimeChanged в OnTimeChangedListener вашего хронометра. - person MojioMS; 16.07.2016

Я бы посоветовал взглянуть на класс DateFormat в android. Будьте осторожны, чтобы импортировать DateFormat, упомянутый в документах Android. После этого любое форматирование, которого вы хотите добиться, очень просто. Для базового 12 августа 2012 года вы можете сделать это.

DatePicker myDatePicker = (DatePicker) findViewById(R.id.mydatepicker);
String selectedDate = DateFormat.getDateInstance().format(myDatePicker.getCalendarView().getDate());

Посмотрите на класс DateFormat, чтобы получить различные другие конфигурации.

person Sojurn    schedule 12.10.2012
comment
Это, наряду с SimpleDateFormat, который наследуется от DateFormat, определенно является лучшим и самым чистым способом ИМХО. - person Guerneen4; 28.05.2015

Объединил все ответы и сделал из этого фрагмент кода.

Импортируйте datePicker в начало вашего класса:

import android.widget.DatePicker;

Внутри вашего класса объявите следующую переменную:

private DatePicker dobPicker;

А вот код, который нужно сделать в событии нажатия кнопки:

 dobPicker = (DatePicker)findViewById(R.id.dobPicker);
        Integer dobYear = dobPicker.getYear();
        Integer dobMonth = dobPicker.getMonth();
        Integer dobDate = dobPicker.getDayOfMonth();
        StringBuilder sb=new StringBuilder();
        sb.append(dobYear.toString()).append("-").append(dobMonth.toString()).append("-").append(dobDate.toString()).append(" 00:00:00");
        String dobStr=sb.toString();

Где в R.id.dobPicker, dobPicker — это ваш datePicker в XML-файле макета. Это дает вам строку в конце, которую можно сохранить или отправить на сервер.

person happyhardik    schedule 22.08.2012

Я бы сделал это как:

    Calendar calendar = Calendar.getInstance();
    calendar.set(dp.getYear(), dp.getMonth(), dp.getDayOfMonth(), Tp.getCurrentHour(), Tp.getCurrentMinute());
    DateFormat gmtFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    TimeZone gmtTime = TimeZone.getTimeZone("GMT");
    gmtFormat.setTimeZone(gmtTime);
    String mydate = ""+ gmtFormat.format(calendar.getTime());

ps dp и tp - это средства выбора даты и времени в Android.

person Hassi    schedule 20.10.2015

получитьдатетимефромпикерс()

Простой метод получения даты и времени из DatePicker и TimePicker

Предостережение: используется JodaTime в DateTime в качестве возврата. Вы можете изменить его, чтобы использовать все, что вам нравится.

 // Gets the Date and Time from a DatePicker and TimePicker and return a JodaTime DateTime from them, in current timezone.
 //
 private DateTime getDateTimeFromPickers( int DatePickerId, int TimePickerId ) {
     DatePicker dp = (DatePicker) findViewById(DatePickerId);
     TimePicker tp = (TimePicker) findViewById(TimePickerId);

     String year    = Integer.toString(dp.getYear()) ;
     String month   = StringUtils.leftPad( Integer.toString(dp.getMonth() + 1), 2, "0" );
     String day     = StringUtils.leftPad( Integer.toString(dp.getDayOfMonth()), 2, "0" );
     String hour    = StringUtils.leftPad( Integer.toString(tp.getCurrentHour()), 2, "0" );
     String minutes = StringUtils.leftPad( Integer.toString(tp.getCurrentMinute()), 2, "0" );

     String dateTime = year + "-" + month + "-" + day + "T" + hour + ":" + minutes + ":00.000";

     return DateTime.parse(dateTime);
 }

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

JP

person Joshua Pinter    schedule 29.01.2014

Попробуйте ниже с Format Ex: 24 декабря 2014 года.

            DatePicker datePicker = (DatePicker) findViewById(R.id.datepicker_inspection);
            SimpleDateFormat df = new SimpleDateFormat("dd MMMM yyyy");
            String inspectiondate = df.format(new Date(datePicker.getYear() - 1900, datePicker.getMonth(), datePicker.getDayOfMonth()));
person Imran Athar    schedule 15.12.2013