Я пытаюсь создать временную метку unix, используя диалоги datepicker и timepicker, но проблема заключается в том, что день всегда отключен одним. Например. если я выберу 10 мая, он отобразит 11 мая в качестве выхода. Однако все остальное не работает. Любые предложения были бы замечательными.
Код даты и времени выглядит следующим образом:
private DatePickerDialog.OnDateSetListener mDateSetListener =
new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
mYear = year;
mMonth = monthOfYear;
mDay = dayOfMonth;
}
};
private TimePickerDialog.OnTimeSetListener mTimeSetListener =
new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
mHour = hourOfDay;
mMinute = minute;
confirmDateChange();
}
};
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG_ID:
return new DatePickerDialog(this,
mDateSetListener,
mYear, mMonth, mDay);
case TIME_DIALOG_ID:
return new TimePickerDialog(this,
mTimeSetListener, mHour, mMinute, false);
}
return null;
}
Затем я вызываю это, чтобы получить временную метку
private long componentTimeToTimestamp(int year, int month, int day, int hour, int minute) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);
c.set(Calendar.DAY_OF_MONTH, day);
c.set(Calendar.HOUR, hour);
c.set(Calendar.MINUTE, minute);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
return (c.getTimeInMillis()/1000L);
}
И, наконец, это устанавливает значение в текстовом виде, но, как я уже сказал, день месяца всегда отключен одним
long mydate = componentTimeToTimestamp(mYear, mMonth, mDay, mHour, mMinute);
long datemod = mydate * 1000;
final java.util.Date d = new java.util.Date(datemod);
details.setText(d.toLocaleString());
Хотя вы выяснили ответ в комментарии. Но вы, должно быть, ответили на него здесь, поскольку большинство людей не путают, что на него не ответили. Пожалуйста, прочитайте комментарии, а затем перейдите к этому ответу.
c.set(year, month, day, hour, minute, 0);