![]() |
cuantos domingos tiene un periodo
Pues tengo problemas para sacar el algoritmo que de un periodo dado me retorne el numero de domingos que hay en ese periodo.
Si alguien me pudiera hechar la mano gracias |
Podrías utilizar WeeksBetween o DaysBetween entre las dos fecha, y dependiendo la posición en la semana de las fechas será un domingo menos o no.
Saludos! |
pues asi me quedo
Function GetSundays(IniDate: TDateTime; EndDate: TDateTime): Integer;
Var Sundays: Integer; Begin Sundays := WeeksBetween(IniDate,EndDate); If DayOfWeek(EndDate) = 1 Then Result := SunDays + 1 Else Result := SunDays; End; |
Y si tu período también empieza el domingo? Debes validar eso también, porque por ejemplo:
Entre el 6 y el 27 de febrero hay 4 domingos y con tu función devuelve 3. Debes incluir ambos extremos, a no ser, claro, que tus períodos no empiecen nunca un domingo... |
mil gracias por la observacion.
:p |
asi queda entonces
asi quedo finalmente
Function GetSundays(IniDate: TDateTime; EndDate: TDateTime): Integer; Var Sundays: Integer; Begin Sundays := WeeksBetween(IniDate,EndDate); If DayOfWeek(IniDate) = 1 then Sundays := Sundays + 1; If DayOfWeek(EndDate) = 1 Then Sundays := SunDays + 1; Result := SunDays; End; |
cuantos sabados y domingos hay de un rango de fechas
hola, me pregunto si podria ocupar esta misma funcion pero tambien para que me cuente los sabados, como podria hacerlo? es decir que el resultado final sea la suma de los sabados y los domingos del rango de las fechas puestas, podria modificar esa funcion y contar los sabados y domingos al mismo tiempo? ¿? o tendria que contar primero los domingos y luego los sabados en esa fecha,si alguien me pudiera auxiliar se los agradeceria muchisimo, si no pues de todos modos se los agradezco ja ja ja :)
|
....Esto.... si tiene 3 domingos, fijo que también tiene 3 sábados :p
Aunque existe el caso especial: habiendo 1 domingo, tiene 2 sábados ;) No es nada difícil hacer esa rutina, mira un calendario, enseguida lo verás. Saludos |
mmm, estaba viendo esa funcion y parece ser que en periodos mayores a una semana funciona bien, pero no funciona cuando es menos de una semana, por ejemplo si ponemos 08/06/2007 y 11/06/2007 el resultado que arroja es 0, y moviendo las fechas siempre y cuando sea menos de 7 dias el resultado sigue siendo 0 sabiendo que hay un domingo de por medio q no cuenta.
Supongo que esto es por que la funcion cuenta las semanas que hay en ese rango y no los dias en especifico, alguna sugerencia para podertomar en cuenta ese detalle... ¿ Existira alguna funcion que te devuelva cuantos dias domingos o lunes o martes etc... existen en un periodo de fechas ? ¿? Seria bueno que existiera algo como WeeksBetween() pero de dias no?.. creo que seria asi SundaysBetween() jeje je.. pero creo que no existe jaja, si alguien conoce algo parecido seria muy bueno :) buen dia!! |
Me tome la libertad de modificar la rutina de poliburro con sabados y domingos, además te recomiendo que leas la ayuda de Delphi sobre el manejo de fechas.
Salud OS. |
contador de sabados y domingos de un periodo de fechas
muy buena tu funcion, yo tambien modifique un poco el codigo y lo adapte a lo que yo queria, que es contar los sabados y domingos de un periodo de fechas, les dejo el codigo para que lo chequen y me den sus sugerencias para mejorarlo o acortarlo je je
Cita:
|
Hola thelibmx, en esa rutina estas contando viernes y sabados.
Los dias se cuentan de 1 a 7 comenzando en Domingo. Salud OS. |
Cita:
|
Cierto, es que estas usando la función DayoftheWeek, la cual efectivamente, toma los valores de 1 a 7 comenzando en Lunes. Yo estoy usando DayofWeek, por eso la confusión.
Aqui te pongo la ayuda de Delphi Cita:
Salud OS. |
Cita:
entonces ya no entendi, mi funcion esta bien no?, o cual es el punto, hasta donde vi hace lo q queria... je je je.. pero es bueno conocer otras funciones .. bueno saludos a todos |
Tu rutina está bien, lo que ocurre, es que DayofWeek considera el 1 como Lunes, DayofTHEWeek considera el 1 como Domingo.
Para evitar líos hay un estandar ISO, y se debería usar dayofTHEweek. Ya que vamos a realizar un bucle por todos los días, haremos una rutina general (me gustaba más la rutina de poliburro ;)):
uso de la rutina:
Edito: Cambio los tipos enumerados por interferencia con las constantes de Sysutils dayMonday, dayTuesday etc. |
ok me parece bien la rutina, pues hay muchas maneras jeje, hay que utilizar la mas estandar...SAludos.
|
La franja horaria es GMT +2. Ahora son las 06:31:40. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi