Parece que el idioma indica los métodos de fecha/día para una fecha determinada. Si alguien estaba interesado, puede leer sobre Zeller's congruence.
No creo que eso es lo que querían que hicieras, pero podrías encontrar el día de la semana del primer día de un mes a partir de eso. Ahora que lo pensé, podría encontrar el día de la semana del día dado como N
y obtener ese módulo 7.
Oh, espera, es la Octava ocurrencia de un día de la semana (como el domingo) o como el Nth weekday del mes! De acuerdo, veo los ejemplos.
Tal vez sería hacer una diferencia si se pudiera construir una fecha como el primero de un mes ..
Dado que es ocurrencia enésima de un día de la semana, y que no se puede juega con cualquier tipo de datos de fecha y hora, y tiene acceso tanto a un día de la semana como a funciones de día del mes. ¿Sería el domingo un cero?
1) Primero, el día de la semana debería coincidir con el día de la semana.
2) N tendría que ser al menos 1 y como máximo 4.
3) El día del mes oscilaría entre n * 7 * día de la semana + 1 yn * 7 * día de la semana + 6 para el mismo n.
- Déjame pensar en eso. Si el domingo fue el primero ... 0 * 7 * 0 + 1 = 1 y el sábado 6 sería 0 * 7 * 0 + 6.
Creo que los puntos 1 y 3 anteriores son suficientes, ya que una función de obtención del día del mes no debería violar 2.
(* first try, this code sucks *)
function isNthGivenDayInMonth(date : dateTime;
dow : dayOfWeek;
N : integer) : boolean;
var B, A : integer (* on or before and after day of month *)
var Day : integer (* day of month *)
begin
B := (N-1)*7 + 1; A := (N-1)*7 + 6;
D := getDayOfMonth(date);
if (dow <> getDayOfWeek(date)
then return(false)
else return((B <= Day) and (A >= Day));
end; (* function *)
Espero que no haya ningún error en ese lol!
[editar: sábado habría sido el séptimo, y el límite superior por encima de (N-1)*7 + 7
.]
Su solución parece que coincidiría con 2 semanas diferentes? Parece que siempre regresaría a cero los domingos? Debería haber hecho un pseudocódigo en C# .. cortocircuito & & es como mi if .. ¿No debería el domingo el primer partido para N = 1 en los meses que comienzan el domingo?
d/ 7 == n
que resultaría en (either 0 or 1)/7 == 1
, que no puede ser cierto! Su ||
capta el (n-1)
también, Robert tiene eso. ¡Ve con la respuesta de Robert Wagner! ¡Son solo 2 líneas, el corto es bueno! Tener (Day-1) mod 7
[editar: (Day-1) div 7
] elimina mis variables innecesarias y 2 líneas de configuración.
Para el registro, esto se debe verificar para los casos límite y así sucesivamente, como si el 31 de agosto fuera domingo o sábado.
[edit: Debería haber marcado el caso de fin de semana también. ! Lo sentimos]
que hace lo contrario de lo que quiero – Kevin