Получить метку времени от DatePicker и TimePicker - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть приложение, в котором пользователь устанавливает дату и время, используя DatePicker и TimePicker.Я пытаюсь сохранить информацию как метку времени.В настоящее время я получаю метку времени на основе даты, выбранной пользователем (см. Код ниже):

                Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
                final Calendar c = cal.getInstance();
                int mYear = c.get(Calendar.YEAR); // current year
                int mMonth = c.get(Calendar.MONTH); // current month
                int mDay = c.get(Calendar.DAY_OF_MONTH); // current day
                // date picker dialog
                DatePickerDialog datePickerDialog = new DatePickerDialog(AddEventActivity.this,
                        new DatePickerDialog.OnDateSetListener() {

                            @Override
                            public void onDateSet(DatePicker view, int year,
                                                  int monthOfYear, int dayOfMonth) {
                                // set day of month , month and year value in the edit text
                                txtDate.setText(dayOfMonth + "/"
                                        + (monthOfYear + 1) + "/" + year);
                                c.set(year, monthOfYear, dayOfMonth);
                                timestamp = c.getTimeInMillis();
                            }

Это работает нормально, но, поскольку я не даю время, оно устанавливает время для времениЯ создаю предмет.Например, допустим, что я установил событие 27 апреля 2014 года в 19:00 и сохранил его в 13:30, записанная метка времени будет отображаться 27 апреля 2014 года в 13:30.

Код длямой TimePicker ниже:

        txtTime.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Calendar mcurrentTime = Calendar.getInstance();
                int hour = mcurrentTime.get(Calendar.HOUR_OF_DAY);
                int minute = mcurrentTime.get(Calendar.MINUTE);

                TimePickerDialog mTimePicker;
                mTimePicker = new TimePickerDialog(AddEventActivity.this, new TimePickerDialog.OnTimeSetListener() {
                    @Override
                    public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) {
                        //adding extra 0 to the front of 1 digit hours and minutes so format is consistent.
                        String hourFormat = String.format("%02d", selectedHour);
                        String minFormat = String.format("%02d", selectedMinute);
                        txtTime.setText(hourFormat + ":" + minFormat);
                    }
                }, hour, minute, true);
                mTimePicker.show();
            }
        });

Есть ли способ объединить дату и время, выбранные для создания точной метки времени?

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Создайте экземпляр класса на уровне класса, и давайте создадим его так, как вы делали это раньше:

Calendar combinedCal = new GregorianCalendar(TimeZone.getTimeZone("GMT"));

Поэтому, когда вы выбираете дату, задайте значение, как вы:

combinedCal.set(year, monthOfYear, dayOfMonth);

Когда вы выбираете время, просто установите выбранные часы и минуты на один и тот же экземпляр:

combinedCal.set(Calendar.HOUR_OF_DAY, selectedHour);
combinedCal.set(Calendar.MINUTE, selectedMinute);
0 голосов
/ 28 февраля 2019

У меня была похожая проблема, когда я выбирал даты, поэтому я создал строку, которую я использовал, чтобы выбрать текущую дату и время, слить ее, чтобы создать идеальный штамп времени, например

final Calendar c = Calendar.getInstance();
                mYear = c.get(Calendar.YEAR);
                mMonth = c.get(Calendar.MONTH);
                mDay = c.get(Calendar.DAY_OF_MONTH);


                DatePickerDialog datePickerDialog = new DatePickerDialog(ServiceManDetails.this,
                        new DatePickerDialog.OnDateSetListener() {

                            @Override
                            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                                String month,day;
                                if(monthOfYear<9){
                                    month="0"+ (monthOfYear + 1);
                                    if(dayOfMonth<10){
                                        day="0"+dayOfMonth;
                                    }else{
                                        day=dayOfMonth+"";
                                    }
                                }else{
                                    month= (monthOfYear + 1)+"";
                                    if(dayOfMonth<10){
                                        day="0"+dayOfMonth;
                                    }else{
                                        day=dayOfMonth+"";
                                    }
                                }
                                //String selectedday=dayOfMonth + "/" + (monthOfYear + 1) + "/" + year;

                                pickedDate=year + "/" + month + "/" + day;



                                final Calendar c = Calendar.getInstance();
                                mHour = c.get(Calendar.HOUR_OF_DAY);
                                mMinute = c.get(Calendar.MINUTE);

                                // Launch Time Picker Dialog
                                TimePickerDialog timePickerDialog = new TimePickerDialog(ServiceManDetails.this,
                                        new TimePickerDialog.OnTimeSetListener() {

                                            @Override
                                            public void onTimeSet(TimePicker view, int hourOfDay,
                                                                  int minute) {

                                                String hr,min;
                                                if(hourOfDay<10){
                                                    hr="0"+hourOfDay;
                                                    if(minute<10){
                                                       min="0"+minute;
                                                    }else{
                                                        min=minute+"";
                                                    }
                                                }else{
                                                    hr=hourOfDay+"";
                                                    if(minute<10){
                                                        min="0"+minute;
                                                    }else{
                                                        min=minute+"";
                                                    }
                                                }
                                                time=hr + ":" + min + ":00";
                                                date=pickedDate+" "+time;

                                                scheduleDialog(date);
                                            }
                                        }, mHour, mMinute, true);
                                timePickerDialog.show();

                            }
                        }, mYear, mMonth, mDay);
                datePickerDialog.show();

также я не хочу устанавливать милисекунды, поэтому я устанавливаю дату, автоматически устанавливаю секунды как 00, вы также можете добавить миллисекунды как 000

...