我有一个自定义对话框,里面有一个日期选择器和一个时间选择器。用户设置日期,一切都很好。日期选择器是隐藏的,时间选择器是显示的。我目前正在手动将时间选择器上的时间设置为上午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上调用直接方法setHour
、setMinute
等。
两件事:您正在打印当前日期(新日期):
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)等