Android TimePicker不返回用户设置的时间,而是实时的,转换为长时间



我有一个自定义对话框,里面有一个日期选择器和一个时间选择器。用户设置日期,一切都很好。日期选择器是隐藏的,时间选择器是显示的。我目前正在手动将时间选择器上的时间设置为上午8点。

我现在想将时间选择器中的用户设置时间转换为长时间,我可以这样做,但它会在logcat中显示手机上的当前时间,而不是实际设置时间。。。谢谢

 button_continue.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {

            if (timeset == false) {
            Calendar calendar = Calendar.getInstance();
            calendar.set(datePickerDiet.getYear(), datePickerDiet.getMonth(), datePickerDiet.getDayOfMonth());
            long startTime = calendar.getTimeInMillis();
            System.out.println(startTime);
            // save to shared pref
            ProfilePrerences.getInstance().setLongValue(DietActivity.this, ProfilePrerences.KEY_START_DIET_DAY, startTime);

            SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); 
            String dateString = formatter.format(new Date(startTime));
            System.out.println(dateString);
            datePickerDiet.setVisibility(View.GONE);
            time_breakfast.setVisibility(View.VISIBLE);
            dialog_txt.setText("At what time do you have breakfast?");  
            time_breakfast.setCurrentHour(8);
            time_breakfast.setCurrentMinute(0);
            time_breakfast.clearFocus();
            timeset = true;
            }
            else if (timeset == true) {
        //  time_breakfast.setVisibility(View.VISIBLE);
            Calendar calendar2 = Calendar.getInstance();
            calendar2.set(time_breakfast.getCurrentHour(), time_breakfast.getCurrentMinute(), 0);

            long breakfasttime = calendar2.getTimeInMillis();
            System.out.println(breakfasttime);

            SimpleDateFormat formatter2 = new SimpleDateFormat("hh:mm"); 
            String dateString2 = formatter2.format(new Date(breakfasttime));
            System.out.println(dateString2);
            //  startdietdialog.cancel();
            ProfilePrerences.getInstance().setLongValue(DietActivity.this, ProfilePrerences.KEY_BREAKFAST_TIME, breakfasttime);
            timeset = false;
            }
        }

    });

这一行导致了问题:

calendar2.set(time_breakfast.getCurrentHour(), time_breakfast.getCurrentMinute(), 0);

这是在日历上设置年、月、日2,而不是您想要的小时、分钟、秒。

可能最简单的解决方案是在calendar2上调用直接方法setHoursetMinute等。

两件事:您正在打印当前日期(新日期):

String dateString2 = formatter2.format(new Date(breakfasttime));
System.out.println(dateString2);

您必须打印日历2时间:

String dateString2 = formatter2.format(calendar2.getTime());
System.out.println(dateString2);

另一个是,Greg Ennis说,你设置日历时间不正确:没有这样的方法只设置小时、分钟和秒。您还应该设置年、月和日,或者分别调用set(Calendar.HOUR,h)、set(Calendar.MINUTE,m)等

最新更新