这是我几天来一直面临的一个非常烦人的问题。我正在使用Genymotion模拟器。代码如下:
DatePicker dp = (DatePicker) d.findViewById(R.id.datePicker1);
TimePicker tp = (TimePicker) d.findViewById(R.id.timePicker1);
Calendar.getInstance();
selectedDate = Calendar.YEAR + "/" + Calendar.MONTH + "/" + Calendar.DAY_OF_MONTH;
selectedTime = Calendar.HOUR_OF_DAY + ":" + Calendar.MINUTE;
dp.init(Calendar.YEAR, Calendar.MONTH, Calendar.DAY_OF_MONTH, new OnDateChangedListener()
{
@Override public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth)
{
selectedDate = dayOfMonth + "/" + monthOfYear + 1 + "/" + year;
}
});
当我调试上述代码并观看 Calendar.MONTH 和 Calendar.DAY_OF_MONTH 的值时,它们出错了。小时和分钟值相同(当前时间为17:25但日历为11:12)。
我做错了什么? TimerPicker会自动在同一设备上初始化为正确的时间。
答案 0 :(得分:3)
Calendar.HOUR_OF_DAY
是Android指定的常量。
当您使用Calendar.HOUR_OF_DAY
时,它不会为您提供当前小时,它会为您提供Android分配给常量Calendar.HOUR_OF_DAY
的值
如果您想获得当前所需的时间
Calendar cal = Calendar.getInstance();
然后如果要检索当前小时,请检索
cal.get(Calendar.HOUR_OF_DAY);
这将为您提供与任何其他值相同的当前小时。
注意:当您检索MONTH时,它会为您减少1个值。例如。对于May,它将返回4,因为它基于0索引值。
所以为了得到你今天的日期和时间
selectedDate = cal.get(Calendar.YEAR) + "/" + (cal.get(Calendar.MONTH)+1) + "/" + cal.get(Calendar.DAY_OF_MONTH);
selectedTime = cal.get(Calendar.HOUR_OF_DAY) + ":" + cal.get(Calendar.MINUTE);
答案 1 :(得分:0)
试试这个
Calendar cal = Calendar.getInstance();
selectedDate = cal.YEAR + "/" + cal .MONTH + "/" + cal.DAY_OF_MONTH;
selectedTime = cal.HOUR_OF_DAY + ":" + cal.MINUTE;
dp.init(cal.YEAR, cal.MONTH, cal.DAY_OF_MONTH, new OnDateChangedListener()
{
@Override public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth)
{
selectedDate = dayOfMonth + "/" + monthOfYear + 1 + "/" + year;
}
});