#android #calendar #gregorian-calendar
#Android #Календарь #григорианский-календарь
Вопрос:
Может ли средство выбора даты календаря вернуться дальше 1900 года или даже дальше 1582 года (день введения григорианского календаря)?
Если можно, можете ли вы показать мне какую-нибудь документацию, где я могу воспроизвести ее дальше?
Комментарии:
1. Я думаю, вам нужно будет создать собственный пользовательский DatePicker / CalendarView, поскольку обработка времени до эпохи отсутствует в стандартной Java. Хорошо то, что исходный код для этих виджетов / представлений доступен в проекте Android с открытым исходным кодом.
Ответ №1:
На самом деле это было довольно просто. В XML вы можете установить минимальную и максимальную дату.
Комментарии:
1. Как насчет добавления некоторого кода, чтобы показать, как кто-то может это сделать? Спасибо!
Ответ №2:
Предложенное решение не сработало для меня. Я использовал следующий код:
void initDatePicker() { Calendar calendar = Calendar.getInstance(TimeZone.getDefault()); calendar.set(1, 0, 1); datePicker.setMinDate(calendar.getTimeInMillis()); calendar.set(3000, 0, 1); datePicker.setMaxDate(calendar.getTimeInMillis()); }
Ответ №3:
Для меня я использую этот код :
public void onClick(View v) {
DatePickerDialog picker;
final Calendar cldr = Calendar.getInstance();
int day = cldr.get(Calendar.DAY_OF_MONTH);
int month = cldr.get(Calendar.MONTH);
int year = cldr.get(Calendar.YEAR);
picker = new DatePickerDialog(MainActivity.this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
//-- Do your stuff with the date picked : dayOfMonth "/" (monthOfYear 1) "/" year
}
}, year, month, day);
//-- Set the calendar to the year one to year 3000 !
Calendar calendar = Calendar.getInstance(TimeZone.getDefault());
calendar.set(1, 0, 1);
picker.getDatePicker().setMinDate(calendar.getTimeInMillis());
calendar.set(3000, 0, 1);
picker.getDatePicker().setMaxDate(calendar.getTimeInMillis());
///////////////////
picker.show();
}