Отливки и получения значений от выбора даты и времени комплектовщик в Android
У меня есть DatePicker
и TimePicker
в моем приложении. Может ли кто-нибудь сказать мне, как получить значения даты и времени, которые выбраны??? Я хочу сказать, что для EditText
мы можем объявить как
final EditText name = (EditText) this.findViewById(R.id.nametext);
И мы можем привести его данные, используя name.getText().toString()
.
Так же, как мы можем получить значения DatePicker и TimePicker в строку???
9 ответов:
DatePicker имеет
getYear() getMonth() getDayOfMonth()
Чтобы сделать объект даты из DatePicker, вы должны сделать
new Date(datePicker.getYear() - 1900, datePicker.getMonth(), datePicker.getDayOfMonth());
Обратите внимание, что этот конструктор был устарел на уровне API 1 - пожалуйста обратитесь к ответу андресканавеси для более подходящего способа создания объекта даты.
Хронометр имеет
getCurrentHour() getCurrentMinute()
Я использую это:
/** * * @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(); }
date=(EditText)findViewById(R.id.date_of_birth_textfield); date.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub showDialog(DATE_DIALOG_ID); } }); mYear = c.get(Calendar.YEAR); mMonth = c.get(Calendar.MONTH); mDay = c.get(Calendar.DAY_OF_MONTH); updateDisplay(); protected Dialog onCreateDialog(int id) { switch(id) { case DATE_DIALOG_ID: return new DatePickerDialog(this, mDateSetListener, mYear, mMonth, mDay); } return null } private DatePickerDialog.OnDateSetListener mDateSetListener= new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { // TODO Auto-generated method stub System.out.println("calendar view shown.."+view.getCalendarViewShown()); c.set(Calendar.YEAR, year); c.set(Calendar.MONTH, monthOfYear); c.set(Calendar.DAY_OF_MONTH, dayOfMonth); mYear = c.get(Calendar.YEAR); mMonth = c.get(Calendar.MONTH); mDay = c.get(Calendar.DAY_OF_MONTH); updateDisplay(); // mMonth = monthOfYear; // mDay = dayOfMonth; } }; private void updateDisplay() { date.setText( new StringBuilder() // Month is 0 `based` so add 1 .append(mYear).append("-").append(mMonth + 1).append("-").append(mDay).append("")); //date.setText(fmtDateAndTime.format(c.getTime())); }
Я бы предложил посмотреть класс DateFormat в android. Будьте осторожны, чтобы импортировать DateFormat, упомянутый в документах android. После этого любое форматирование, которого вы хотите достичь, действительно просто. Для базового 12 августа 2012 года вы можете сделать это.
DatePicker myDatePicker = (DatePicker) findViewById(R.id.mydatepicker); String selectedDate = DateFormat.getDateInstance().format(myDatePicker.getCalendarView().getDate());
Посмотрите на классDateFormat , чтобы получить различные другие конфигурации.
Объединил все ответы и сделал из них фрагмент кода.
Импорт 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 в файле layout xml. Это дает вам строку в конце, которая может быть сохранена или отправлена на сервер.
Я бы сделал это так:
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());
P. s dp и tp-это средства выбора даты и времени в android.
GetDateTimeFromPickers ()
Простой способ получения даты и времени из Датапикера и Хронометра
предостережение: он использует JodaTime's
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
StringBuilder sb=new StringBuilder(); sb.append(myYear).append("-").append(myMonth).append("-").append(myDay); String str=sb.toString(); edittext.setText(str);
Попробуйте ниже с форматом 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()));