2011-06-30 57 views
9

Lớp Lịch của Java cung cấp cho hai trường: WEEK_OF_MONTH và DAY_OF_WEEK_IN_MONTH. Ai đó có thể giải thích sự khác biệt với tôi? Dường như cả hai đều trả về giá trị tương tự khi thử nghiệm bằng cách sử dụng mã bên dưới:Sự khác nhau giữa Lịch.WEEK_OF_MONTH và Lịch.DAY_OF_WEEK_IN_MONTH trong lớp Lịch của Java là gì?

Calendar date = Calendar.getInstance(); 
date.set(2011,5,29); 
int weekNo1 = date.get(Calendar.WEEK_OF_MONTH); 
int weekNo2 = date.get(Calendar.DAY_OF_WEEK_IN_MONTH); 
+1

Các tài liệu giải thích điều này khá tốt. http://download.oracle.com/javase/1.5.0/docs/api/java/util/Calendar.html#DAY_OF_WEEK_IN_MONTH http://download.oracle.com/javase/1.5.0/docs/api/java /util/Calendar.html#WEEK_OF_MONTH –

Trả lời

4

Tuần Tháng là tuần trong tháng hiện tại bắt đầu từ chủ nhật bao nhiêu tuần đã có được.

Ngày trong tuần trong tháng là ngày 5 sẽ là Thứ Năm, 1 chủ nhật ect.

+0

'WEEK_OF_MONTH' phụ thuộc vào ngày đầu tiên của tuần. Không có lịch nào có chủ nhật bắt đầu trong tuần. Ví dụ như Pháp, có thứ hai là ngày đầu tiên trong tuần. –

+4

Câu trả lời này hoàn toàn không chính xác. 'DAY_OF_WEEK_IN_MONTH' là" số lần ngày trong tuần đã xảy ra trong tháng ", như @ user3096406 đề cập bên dưới. – makhdumi

9

tôi thấy tất cả các tài liệu khác khó hiểu, vì vậy đối với bất kỳ nhà phát triển của Microsoft như bản thân mình một điều này có thể được rõ ràng cho bạn, như nó đã cho tôi:

http://msdn.microsoft.com/en-us/library/aa986432(v=vs.80).aspx

Một hằng đại diện cho một giá trị bao nhiêu lần một ngày nhất định có xảy ra trong tháng.

+0

Đối với nhà phát triển Unix, tài liệu Sun/Oracle về chủ đề này cũng khá khó hiểu ;-) –

+1

"số lần một ngày nhất định đã xảy ra trong tháng". giải thích mọi thứ. Cảm ơn – Saif

16

Sự khác biệt là DAY_OF_WEEK_IN_MONTH cung cấp số lần ngày trong tuần đã xảy ra trong tháng và WEEK_OF_MONTH chỉ trả về số tuần trong tháng hiện tại. Hãy nghĩ về nó theo cách này, nếu tháng bắt đầu vào thứ Tư, ngày thứ Hai đầu tiên sẽ xảy ra trong tuần thứ hai của tháng. Giá trị cho DAY_OF_WEEK_IN_MONTH cho rằng thứ hai sẽ là 1, nhưng WEEK_OF_MONTH sẽ là 2.

5
  • Calendar.WEEK_OF_MONTH chỉ đơn giản trả "số tuần hiện tại trong tháng hiện tại"
  • Calendar.DAY_OF_WEEK chỉ đơn giản trả "hiện tại số ngày trong tuần hiện tại bắt đầu vào Chủ Nhật trước "
  • Calendar.DAY_OF_WEEK_IN_MONTH trả về "N nếu ngày hiện nay là ngày thứ N của tháng" nói "3 nếu hôm nay là thứ 3 thứ tư trong tháng"

Vì vậy, tôi viết những dòng này vào 21 tháng 12 năm 2016:

enter image description here

Và đây là những gì tôi nhận được:

Calendar today = Calendar.getInstance(); 
System.out.println(today.get(Calendar.DAY_OF_WEEK));   //outputs 4, as today is 4th day in this week which started on 18 
System.out.println(today.get(Calendar.DAY_OF_WEEK_IN_MONTH)); //outputs 3, as today is "3rd Wednesday of this month". Earlier two wednesday were on 7th and 14th 
System.out.println(today.get(Calendar.WEEK_OF_MONTH));  //outputs 4, as currently 4th week of a month is running 
Các vấn đề liên quan