2011-06-30 19 views
9

La clase Calendario de Java proporciona dos campos: WEEK_OF_MONTH y DAY_OF_WEEK_IN_MONTH. ¿Alguien me puede explicar la diferencia? Parece que ambos devuelven el mismo valor cuando se prueba con el siguiente código:¿Cuál es la diferencia entre Calendar.WEEK_OF_MONTH y Calendar.DAY_OF_WEEK_IN_MONTH en la clase Calendar de Java?

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

Los documentos explican esto bastante bien. 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 –

Respuesta

4

Semana del Mes es la semana dentro del mes en curso a partir del domingo cuántas semanas han habido.

El día de la semana del mes es el día 5 sería el jueves, 1 domingo ect.

+0

'WEEK_OF_MONTH' depende del primer día de la semana. No todos los calendarios tienen el domingo tiene comienzo de semana. Francia, por ejemplo, tiene el lunes como primer día de la semana. –

+4

Esta respuesta es completamente incorrecta. 'DAY_OF_WEEK_IN_MONTH' es" la cantidad de veces que se ha producido el día de la semana durante el mes ", como @ user3096406 menciona a continuación. – makhdumi

9

me encontré con todos los demás documentos confusos, por lo que para cualquier desarrolladores de Microsoft, como yo, éste podría ser claro para usted, como lo fue para mí:

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

Constante que representa un valor para cuántas veces un día dado ha ocurrido en el mes.

+0

Para los desarrolladores de Unix, los documentos de Sun/Oracle sobre estos temas también son bastante confusos ;-) –

+1

"cuántas veces ha ocurrido un día determinado en el mes". explicó todo. Gracias – Saif

16

La diferencia es que DAY_OF_WEEK_IN_MONTH proporciona el número de veces que el día de la semana ha tenido lugar durante el mes y WEEK_OF_MONTH sólo devuelve el número de semana dentro del mes en curso. Piénselo de esta manera, si el mes comienza un miércoles, el primer lunes ocurrirá durante la segunda semana del mes. El valor para DAY_OF_WEEK_IN_MONTH para que el lunes sería 1, pero el WEEK_OF_MONTH sería 2.

5
  • Calendar.WEEK_OF_MONTH simplemente devuelve "número de la semana actual en el mes actual"
  • Calendar.DAY_OF_WEEK simplemente devuelve "actual número del día en la semana actual a partir del último domingo "
  • Calendar.DAY_OF_WEEK_IN_MONTH devuelve "N si el día actual es día N del mes" dicen "3 si hoy es miércoles 3 en el mes"

así que estoy escribiendo esto el 21 de diciembre 2016:

enter image description here

Y esto es lo que obtengo:

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 
Cuestiones relacionadas