2016-08-26 2 views
0

1 년만을 표시하는 목록 선택기를 만들고 싶습니다.1 년 목록 대화 상자 만 얻을 수있는 방법

하지만 올해는 내년에 자동으로 증가하기를 바랍니다.

DatePicker에서이 작업을 시도했지만 연도 선택기 만 표시하지 않았습니다.

어떻게하면됩니까?

답변

1

사용 java.time

사용 java.time 클래스, 번잡 한 기존 레거시 날짜 - 시간 클래스에 대한 현대적인 교체.

연도를 결정하는 것은 날짜를 결정하는 것을 의미합니다. 날짜를 결정하려면 시간대가 필요합니다. 어떤 주어진 순간에, 날짜는 지구에 따라 지역마다 다릅니다. 예를 들어, 파리에서 자정 몇 분 후 프랑스는 새로운 날이며, 여전히 몬트리올 퀘벡에서 "어제"입니다.

지정하지 않으면 JVM의 현재 기본 시간대가 적용됩니다. 기본값은 달라지며 심지어 런타임 중에 이됩니다. 항상 원하는/예상 시간대를 명시 적으로 지정하는 것이 좋습니다.

ZoneId z = ZoneId.of("America/Montreal"); 

연도 만 원할 경우이 시간대 문제는 분명히 연말/시작 부분에 적용됩니다. 그러나 일년 중 365 일 또는 366 일을 모두 일하도록 프로그램 할 수도 있습니다.

LocalDate

LocalDate 클래스는 시간이 하루의 시간 영역없이없이 날짜 만 값을 나타냅니다.

LocalDate ld = LocalDate.now(z); 

마지막으로 올해를 심문합니다.

int year = ld.getYear(); 

내년과 작년을 계산하십시오.

int nextYear = (year + 1); 
int lastYear = (year - 1); 

이제 이러한 값을 사용하여 숫자 선택기를 표시하십시오.

java.time 프레임 워크 나중에 자바 8에 내장되어 java.time 소개

. 이러한 클래스는 java.util.Date, .Calendar, & java.text.SimpleDateFormat과 같이 오래된 번거로운 날짜 시간 클래스를 대체합니다.

Joda-Time 프로젝트는 현재 maintenance mode에 있으며, java.time으로 마이그레이션하는 것이 좋습니다.

자세히 알아 보려면 Oracle Tutorial을 참조하십시오. 그리고 많은 예제와 설명을 위해 스택 오버플로를 검색하십시오.

자바의 대부분.시간 기능은 Java 6 & 7에 ThreeTen-Backport으로 다시 포트되고 AndroidThreeTenABP (How to use… 참조)에 맞게 다시 조정됩니다.

ThreeTen-Extra 프로젝트는 추가 클래스로 java.time을 확장합니다. 이 프로젝트는 향후 java.time에 추가 될 수있는 가능성을 입증합니다.

+0

답장을 보내 주셔서 감사합니다. @Basil. – pmb

0

기본 TimePicker를 사용하는 것은 불가능합니다. 그러나 MH의 "해킹"인 solution을 구현할 수 있습니다.

또는 NumberPicker을 사용하고 사용 가능한 기간을 나열 할 수 있습니다.

관련 문제