日历错误的日期和时间

时间:2014-05-23 12:25:46

标签: android android-calendar android-datepicker

这是我几天来一直面临的一个非常烦人的问题。我正在使用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会自动在同一设备上初始化为正确的时间。

2 个答案:

答案 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;
        }
    });