문제

주중 첫날을 어떻게 얻습니까? 장소 사용 조다-시간?

포인트 : 대부분의 국가는 국제 표준 월요일을 첫 번째 요일 (!)으로 사용합니다. 다른 사람들은 일요일 (특히 미국)을 사용합니다. 다른 사람들은 토요일에 분명히. 분명히 수요일?!

Wikipedia "7 일 주"#week_number

도움이 되었습니까?

해결책

Joda-Time은 ISO 표준 월요일부터 일요일 주일에 사용합니다.

첫 번째 요일을 얻거나 표준 월요일 이외의 날을 기준으로 요일 지수를 반환 할 수있는 능력이 없습니다. 마지막으로,주는 항상 WRT ISO 규칙으로 계산됩니다.

다른 팁

주어진 로케일에 대한 "주중의 시작"을 찾기 위해 JDK를 사용할 수없는 이유는 없습니다. 유일한 까다로운 부분은 평일 상수를 번역하는 것입니다. 여기서 둘 다 1-7이지만 java.util.calendar는 calendar.monday = 2 vs. dateTimeConstants.monday = 1으로 하나로 이동합니다.

어쨌든,이 기능을 사용하십시오.

/**
 * Gets the first day of the week, in the default locale.
 *
 * @return a value in the range of {@link DateTimeConstants#MONDAY} to
 *         {@link DateTimeConstants#SUNDAY}.
 */
private static final int getFirstDayOfWeek() {
  return ((Calendar.getInstance().getFirstDayOfWeek() + 5) % 7) + 1;
}

Calendar.getInstance ()에 로케일을 추가하여 기본값 이외의 일부 로케일에 대한 결과를 얻으십시오.

다음은 Joda Time을 중심으로 일주일의 첫날을 얻을 수있는 방법입니다.

DateTime getFirstDayOfWeek(DateTime other) {
  if(other.dayOfWeek.get == 7)
    return other;
  else
    return other.minusWeeks(1).withDayOfWeek(7);
}

또는 스칼라로

def getFirstDayOfWeek(other: DateTime) = other.dayOfWeek.get match {
    case 7 => other
    case _ => other.minusWeeks(1).withDayOfWeek(7)
}

운이 좋지 않은 것처럼 보이며, 제공된 모든 연대기가 Basechronology의 구현을 물려받는 것처럼 보이며, 이는 ISO 정의 만 지원합니다 (예 : 월요일) ... 1 일 = 7.

strictchronology 또는 lenientchronology를 모델링 할 수있는 자신의 LocalEchronology를 정의해야합니다. 공장 방법을 추가하십시오.

public static LocaleChronology getInstance(Chronology base, Locale locale)

의 구현을 무시합니다

public final DateTimeField dayOfWeek()

java.util.calendar.setweekcountdata (Locale destiredlocale)를 다시 구현하여 sun.util.resources.localedata..getcalendardata (desiredlocale)에 의존합니다.

그래서 당신의 질문은, Joda dateTime 객체에서 주간을 얻는 방법입니다. 이건 어때 :

DateTime dt = new DateTime().withYear(2009).plusDays(111);
dt.toGregorianCalendar().getFirstDayOfWeek();

나는 다음을 사용했다 그루터기 안에 Scala 일주일의 마지막과 마지막 날을 얻기 위해 Joda DateTime

val today: DateTime = new DateTime()
val dayOfWeek: DateTime.Property = today.dayOfWeek()

val firstDayOfWeek: DateTime = dayOfWeek.withMinimumValue().minusDays(1)
val lastDayOfWeek: DateTime = dayOfWeek.withMaximumValue().minusDays(1)

메모: minusDays(1) 만하기위한 것입니다 일요일부터 토요일까지 (월요일부터 일요일까지 기본값 대신 Joda). 우리 (및 기타 유사한) 로케일, 당신은이 부분을 무시할 수 있습니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top