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
print
?
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

좋은 웹페이지 즐겨찾기