setFirst Day of Week in Calendar 는 작 동 하지 않 습 니 다.효과 가 없습니다.사용 할 수 없습니다.
5882 단어 calendar
Calendar API 에 있 더 라 고요. setFirstDayOfWeek()。
그래서 저 는 setFirst Day Of Week(Calendar.MONDAY)를 설 치 했 습 니 다.
그런데 cal.get(Calendar.DAYOF_WEEK)는 일요일 을 시작 으로 첫날 의 결 과 를 얻 었 다.답답 해.인터넷 에서 찾 았 는데 외국인 도 이 문 제 를 만 났 다.외국인 이 만난 문제:
Calendar myCalendar = Calendar.getInstance();
myCalendar.setTime(new Date());
System.out.println(myCalendar.get(Calendar.DAY_OF_WEEK);
myCalendar.setFirstDayOfWeek(Calendar.MONDAY);
System.out.println(myCalendar.get(Calendar.DAY_OF_WEEK);
Calendar returns the same value before and after setFirstDayOfWeek.
Any ideas on why this doesn't work and how to get it to work?
또 다른 외국인 이 결론 을 내 려 서 야 나 는 문득 크게 깨 달 았 다.
This is one of many ways in which
java.util.Calendar
is counterintuitive. It does work, but not the way you're expecting. Look at the documentation[ for the
DAY_OF_WEEK
field: "This field takes values SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, and SATURDAY." When your program prints 6, it's telling you that the day of week is
FRIDAY
. This constant value has nothing to do with the beginning of the week - it's just a constant that means FRIDAY. It does coincidentally happen to be the same as the day of the week if the first day of the week is SUNDAY (1) - but it doesn't change if the first day of the week is redefined.
Compare this to the API for
WEEK_OF_MONTH
and
WEEK_OF_YEAR
, which
do
say that they depend on the first day of the week. You can
test
to see if this works correctly for your purposes.
If you really need a number representing day of week with 1 meaning Monday and 7 meaning Sunday, you can get it with a tiny bit of math:
view plain
copy to clipboard
?
int dayOfWeek = myCalendar.get(Calendar.DAY_OF_WEEK) - 1;
if (dayOfWeek == 0)
dayOfWeek = 7;
다 보고 나 니 알 겠 다.
public int getDayOfWeek(String dateString){
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = format.parse(dateString);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.setFirstDayOfWeek(Calendar.MONDAY);
int tmp = cal.get(Calendar.DAY_OF_WEEK) - 1;
if (0 == tmp) {
tmp = 7;
}
return tmp;
} catch (ParseException e) {
e.printStackTrace();
return -1;
}
}
다음은 링크:
http://www.coderanch.com/t/381293/java/java/setFirstDayOfWeek-Calendar
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【GAS】Google 캘린더의 예정을 Slack 통지슬랙에 Google 캘린더 일정을 알리고 싶습니다. 아침 8시에 실행하여 대략 1일의 예정을 통지한다 slack의 내 프로필 → 환경 설정 → 메시지 및 미디어에서 Slack으로 메일 전송 사용 이메일 주소를 복사합...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.