2013-07-29 6 views
4

저는 Java로 프로그램을 작성 중이며 특정 날짜가 주말인지 여부를 결정해야합니다. 그러나 여러 나라의 주말마다 다른 날에 접어 들게됩니다. 이스라엘에서는 금요일과 토요일에 일부 이슬람 국가에서 목요일과 금요일이됩니다. 자세한 내용은 this Wikipedia article을 참조하십시오. 그것을 할 수있는 간단한 방법이 있습니까?Java에서 현재 로캘을 고려하여 특정 날짜가 주말인지 확인하는 방법은 무엇입니까?

+0

나처럼 보이지 않는다. 정보는 Locale에 저장됩니다. –

+0

자바의 날짜/시간 기능 대신 JodaTime으로 전환하는 것을 고려해야합니다. (Java 8을 사용하고 있고 이전 Java 프레임 워크를 지원할 필요가없는 경우 - JodaTime은 Java 8에 다른 이름으로 더 많이 또는 덜 내장되어 있습니다.) – RenniePet

+0

@RenniePet 예 [Joda-Time] (http : //www.joda.org/joda-time/)은 훌륭한 도서관입니다. 그러나 나는이 질문에 도움이되는 것을 보지 못한다. 내가 아는 한 Joda-Time은 평일과 주말에 관한 로케일 유형의 정보를 포함하지 않습니다. Joda-Time은 [ISO 8601] (http://en.wikipedia.org/wiki/ISO_8601) 표준 기간을 지원하지만 다른 문화 기반 주는 지원하지 않습니다. 통찰력이나 예제 코드가 있으면 공유 할 수 있습니다. –

답변

0

Java Calendar 클래스에는이 기능이 있습니다 (getFirstDayOfWeek method). Calendar 문서에서 인용 : 일주일의 첫날 (1 ~ 7) 최초의주의 최소 날짜

캘린더는 두 개의 매개 변수를 사용하여 로케일 고유의 주 7 일이 정의. 이 숫자는 달력 작성시 로켈 자원 데이터에서 가져옵니다. 값을 설정하는 메소드를 통해 명시 적으로 지정할 수도 있습니다.

따라서이 정보를 사용하면 하루가 주말인지 아닌지를 계산할 수 있습니다.

final Calendar cal = Calendar.getInstance(new Locale("he_IL")); 
    System.out.println("Sunday is the first day of the week in he_IL? " + (Calendar.SUNDAY == cal.getFirstDayOfWeek())); 

출력 :

Sunday is the first day of the week in he_IL? true 
+6

그것에 따르면 일요일은 en입니다.여기에있는 큰 결함 :'getFirstDayOfWeek'는 일주일의 첫날이 아닌 인쇄 된 캘린더의 첫 번째 날짜를 반환합니다. http://ideone.com/zX4Pcc – zapl

0

도서관, Jollyday 휴일을 계산하는 것이 유용 할 수있다, 당신은 내가 나 자신을 위해 그것을 해결했습니다 보낸 위키를 기반으로 http://jollyday.sourceforge.net/index.html

2

다음 코드 :

private static final List<String> sunWeekendDaysCountries = Arrays.asList(new String[]{"GQ", "IN", "TH", "UG"}); 
private static final List<String> fryWeekendDaysCountries = Arrays.asList(new String[]{"DJ", "IR"}); 
private static final List<String> frySunWeekendDaysCountries = Arrays.asList(new String[]{"BN"}); 
private static final List<String> thuFryWeekendDaysCountries = Arrays.asList(new String[]{"AF"}); 
private static final List<String> frySatWeekendDaysCountries = Arrays.asList(new String[]{"AE", "DZ", "BH", "BD", "EG", "IQ", "IL", "JO", "KW", "LY", "MV", "MR", "OM", "PS", "QA", "SA", "SD", "SY", "YE"}); 

public static int[] getWeekendDays(Locale locale) { 
    if (thuFryWeekendDaysCountries.contains(locale.getCountry())) { 
     return new int[]{Calendar.THURSDAY, Calendar.FRIDAY}; 
    } 
    else if (frySunWeekendDaysCountries.contains(locale.getCountry())) { 
     return new int[]{Calendar.FRIDAY, Calendar.SUNDAY}; 
    } 
    else if (fryWeekendDaysCountries.contains(locale.getCountry())) { 
     return new int[]{Calendar.FRIDAY}; 
    } 
    else if (sunWeekendDaysCountries.contains(locale.getCountry())) { 
     return new int[]{Calendar.SUNDAY}; 
    } 
    else if (frySatWeekendDaysCountries.contains(locale.getCountry())) { 
     return new int[]{Calendar.FRIDAY, Calendar.SATURDAY}; 
    } 
    else { 
     return new int[]{Calendar.SATURDAY, Calendar.SUNDAY}; 
    } 
}