Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

cantidad de semana

279 views
Skip to first unread message

COTABEX

unread,
Sep 20, 2004, 12:28:50 PM9/20/04
to

hola a todos
Alguien tiene o conoce alguna función que diga cuanta semanas tiene cada mes
de un año

Por ejemplo del año 2004

enero tiene 5
Febrero 4
Marzo 4
Abril 5

y así sucesivamente

gracias
_____________________
Edwin Duran
COTABEX
Republica Dominicana
_____________________


Carlos Yohn Zubiria

unread,
Sep 20, 2004, 10:09:00 AM9/20/04
to
Para mi modo de entender y utilizando fdow = 2, y fweek = 1, Enero de 2004
tiene 5, febrero 5, marzo 5, abril 5, mayo 6, junio 5, julio 5, agosto 6,
septiembre 5, octubre 5, noviembre 5, y diciembre 5.
Ejemplo Febrero: el día uno pertenece a la semana nº 5 y el día 29 a la
semana nº 9 por tanto tiene las semanas: 5, 6, 7, 8, y 9
Otra cosa distinta sería semanas completas y otra distinta grupos de 7
días...
Cualquiera que sea el dato que tu realmente quieres, lo podrás averiguar
conociendo los números de semana del prime y del último día del mes y el día
de la semana de esos mismos (week y dow)

--
Saludos,
A.G.P. (Aplicaciones de Gestión y Productividad)
Las Arenas - Vizcaya - España

"COTABEX" <cot...@verizon.net.do> escribió en el mensaje
news:eYqpnTxn...@TK2MSFTNGP09.phx.gbl...

Luis María Guayán

unread,
Sep 20, 2004, 10:37:07 AM9/20/04
to
A ver si nos entendemos,

¿Las semanas deben ser completas o sea deben tener de 7 días? si es así
_TODOS_ los meses solo tienen 4 semanas completas.

Ahora si quieres saber cuantas semanas abarca cada mes (como por ejemplo en
un calendario saber cuantas filas se necesita para graficar determinado mes)
puedes utilizar el siguiente código

lnDiaInicial = 1 && 1=Domingo, 2=Lunes, ..., 7=Sábado
lnAnio = 2004
FOR lnMes = 1 TO 12
ldPrimerDia = DATE(lnAnio,lnMes,01)
ldUltimoDia = GOMONTH(ldPrimerDia,1) - 1
lnCantSem = Semana(ldUltimoDia, lnDiaInicial) - Semana(ldPrimerDia,
lnDiaInicial) + 1
? "Mes " + TRANSFORM(lnMes)+ ": " + TRANSFORM(lnCantSem) + " semanas"
ENDFOR

*------------------------------------------------------------
* FUNCTION Semana(tdFecha, tnPriDiaSem)
*------------------------------------------------------------
* Retorna el número de semana de una Fecha
* USO: Semana(DATE(2004,06,03),2)
* PARAMETROS:
* tdFecha = Fecha
* tnPriDiaSem = Primer día de la semana (1=Domingo, ..., 7=Sábado)
* RETORNO: Numérico
*------------------------------------------------------------
FUNCTION Semana(tdFecha, tnPriDiaSem)
IF EMPTY(tdFecha)
RETURN 0
ENDIF
IF EMPTY(tnPriDiaSem)
tnPriDiaSem = 1
ENDIF
RETURN INT((tdFecha - DATE(YEAR(tdFecha),1,1) + ;
7 - DOW(tdFecha,tnPriDiaSem)) / 7) + 1
ENDFUNC
*------------------------------------------------------------

NOTA: Utilizo la función Semana() y no Week() por los motivos descritos en
el siguiente artículo:

-- Número de semana --
http://www.portalfox.com/article.php?sid=1113


--
Luis María Guayán
Tucumán, Argentina
________________________________
SysOp de www.PortalFox.com
Microsoft Visual FoxPro MVP
________________________________
La palabra imposible solo figura
en el diccionario de los tontos


"COTABEX" <cot...@verizon.net.do> escribió en el mensaje
news:eYqpnTxn...@TK2MSFTNGP09.phx.gbl...
>

COTABEX

unread,
Sep 20, 2004, 4:05:25 PM9/20/04
to
gracias Carlos y Luis Maria por responder

Luis Maria el código que me pasaste esta bien desde el punto de vista de la
explicación

ahora si te fijas el año 2004 tiene 52 semanas y la suma según tu código me
da 62 semanas, esto me puede ayudar para in trabajando a ver si sale,

si me pueden seguid ayudando no tengo problema

mil gracias

--

_____________________
Edwin Duran
COTABEX
Republica Dominicana
_____________________

"Luis María Guayán" <luis...@portalfoxxx.com> escribió en el mensaje
news:eARag9xn...@TK2MSFTNGP15.phx.gbl...

Luis María Guayán

unread,
Sep 20, 2004, 2:24:24 PM9/20/04
to
Edwin, dinos exactamente que es lo que necesitas, define que es para tí "la
cantidad de semanas de un mes", puede ser el número de semanas completas, en
número de semanas que abarca, la cantidad de "Lunes" (u otro día) que tiene
el mes, etc.

Si necesitas valores "exactos" de semanas, solo divide el número de días del
mes sobre siete:

SET DECIMALS TO 4
lnAnio = 2004
lnTotalSemanas = 0


FOR lnMes = 1 TO 12
ldPrimerDia = DATE(lnAnio,lnMes,01)

lnCantSem = DAY(GOMONTH(ldPrimerDia,1) - 1) / 7
lnTotalSemanas = lnTotalSemanas + lnCantSem
? "Mes " + TRANSFORM(lnMes)+ ": " + TRANSFORM(lnCantSem,"99.9999") + "
semanas"
ENDFOR
? "Total semanas del año :" + TRANSFORM(lnTotalSemanas,"99.9999")

--
Luis María Guayán
Tucumán, Argentina
________________________________
SysOp de www.PortalFox.com
Microsoft Visual FoxPro MVP
________________________________
La palabra imposible solo figura
en el diccionario de los tontos


"COTABEX" <cot...@verizon.net.do> escribió en el mensaje

news:%23e8upMz...@TK2MSFTNGP15.phx.gbl...

Carlos Yohn Zubiria

unread,
Sep 21, 2004, 3:56:32 AM9/21/04
to
Claro. Hay semanas que 'pertenecen' a 2 meses. Incluso puede haber 2 semanas
que pertenecen a 2 años: la primera y la última.
Fíjate que la configuración mas usada de 'semana 1 del año' es 'aquella que
contiene el día 1 de enero de ese año'. Es una semana cuyo lunes (o domingo)
puede estar en el año anterior.

Por eso te insistimos los 2 en distinguir:
.- semanas naturales que tienen días en un mes (la suma será mayor que 52)
.- semanas naturales que están completas dentro del mismo mes (la suma será
menor que 52)
.- grupos de 7 días naturales (dependerá de si utilizamos decimales o no)

Tendrás que definir cual es tu objetivo final y segun eso aplicar lo
necesario.

--
Saludos,
A.G.P. (Aplicaciones de Gestión y Productividad)
Las Arenas - Vizcaya - España

"COTABEX" <cot...@verizon.net.do> escribió en el mensaje
news:%23e8upMz...@TK2MSFTNGP15.phx.gbl...

COTABEX

unread,
Sep 21, 2004, 2:30:14 PM9/21/04
to
disculpen por no ser claro

Saben que un año tiene 52 o 53 semanas, esas semana se reparten entre los 12
meses, yo lo que quiero es determinar las semanas que corresponde a cada mes
sin que se pase del total de semanas de ese año, por ejemplo el año 2004
tiene 52 semanas, el 2005 tiene 53.

ojala que me entiendan


--
_____________________
Edwin Duran
COTABEX
Republica Dominicana
_____________________

"COTABEX" <cot...@verizon.net.do> escribió en el mensaje

news:%23e8upMz...@TK2MSFTNGP15.phx.gbl...

Luis María Guayán

unread,
Sep 21, 2004, 1:36:23 PM9/21/04
to
> ojala que me entiendan

NO, por lo visto tu tampoco nos entiendes a Carlos y a mí :-)))

No puedes trabajar con números enteros de semanas en un mes, o trabajas con
meses, o trabajas con semanas, no intentes mezclar ambas.

--
Luis María Guayán
Tucumán, Argentina
________________________________
SysOp de www.PortalFox.com
Microsoft Visual FoxPro MVP
________________________________
La palabra imposible solo figura
en el diccionario de los tontos

"COTABEX" <cot...@verizon.net.do> escribió en el mensaje

news:Od%23YG8%23nEH...@TK2MSFTNGP10.phx.gbl...

COTABEX

unread,
Sep 21, 2004, 5:40:49 PM9/21/04
to
claro que los entiendo
lo que pasa es que en mi país, se le paga a un gran números de empleados
semanalmente, mas si trabajan en zona franca, en la compañía que trabajo se
paga de dos maneras semanal y quincenal, pero no se hace dos nominas, por
ejemplo si la quincena es un miércoles las personas tienen que esperar al
viernes a cobrar.

lo que quiero es definir en que semana debo hacerle unas deducciones a los
empleados que se hace al final de mes por ley del gobierno.

ya me dieron una idea de como hacerlo y les agradezco mucho su ayuda, mi
idea consíste en

1)saber con el week() cual es el primer día de un año y cual es el fina.
2) como la semana tiene siete días y comienza en domingo, determinar si el
ultimo día del mes es igual o mayor de jueves esto lo quiero lo quiero
controlar con fdow

mil gracias amigos


_____________________
Edwin Duran
COTABEX
Republica Dominicana
_____________________
"Luis María Guayán" <luis...@portalfoxxx.com> escribió en el mensaje

news:O735UGA...@TK2MSFTNGP09.phx.gbl...

Luis María Guayán

unread,
Sep 21, 2004, 3:17:10 PM9/21/04
to
Lindo lío :-)

Te paso estas dos funciones que te pueden ayudar (si es que algo he
entendido)

-- Ultimo día "X" de un mes --
http://www.portalfox.com/article.php?sid=1013

Con la función anterior puedes calcular: Ultimo Jueves de Setiembre de 2004
? UltimoDia(5,9,2004)

-- Calcular fechas festivas --
http://www.portalfox.com/article.php?sid=806

Con la función anterior puedes calcular: 1° Jueves de Octubre de 2004
? FechaFestiva(1,5,10,2004)

Y si de fechas se trata, mirate el siguiente artículo de PortalFox:

-- Trabajar con fechas y horas en Visual FoxPro --
http://www.portalfox.com/article.php?sid=1162

--
Luis María Guayán
Tucumán, Argentina
________________________________
SysOp de www.PortalFox.com
Microsoft Visual FoxPro MVP
________________________________
La palabra imposible solo figura
en el diccionario de los tontos

"COTABEX" <cot...@verizon.net.do> escribió en el mensaje

news:uk5ymmA...@tk2msftngp13.phx.gbl...

Carlos Yohn Zubiria

unread,
Sep 22, 2004, 7:40:29 AM9/22/04
to
¿Se paga semanalmente y hay deducciones mensuales ligadas a la nómina?
Tendrás que prorratear por nº de días.
Cada día del mes pertenece a una semana; prorratea lo que se cobró esa
semana entre los días laborables de esa semana y vete sumando.

--
Saludos,
A.G.P. (Aplicaciones de Gestión y Productividad)
Las Arenas - Vizcaya - España

"COTABEX" <cot...@verizon.net.do> escribió en el mensaje
news:uk5ymmA...@tk2msftngp13.phx.gbl...

0 new messages