Pergunta

Existe uma estrutura de dados publicado para armazenar periódica ou datas recorrentes? Algo que pode lidar com:

  1. A necessidade bomba de reciclagem a cada cinco dias.
  2. Payday é cada segunda sexta-feira.
  3. Dia de Ação de Graças é a segunda-feira de outubro (US: quarta quinta-feira em novembro).
  4. Dia dos Namorados é a cada 14 de Fevereiro.
  5. Solstice é (geralmente) a cada 21 de junho e 21 de dezembro.
  6. A Páscoa é o domingo após a primeira lua cheia em ou após o dia do equinócio vernal (ok, este é um pouco de um trecho).

Eu acho estrutura de dados interna do cron pode lidar com # 1, # 4, # 5 (duas regras), e talvez # 2, mas eu não tive um olhar para ele. MS Outlook e outros calendários parecem ser capazes de lidar com os cinco primeiros, mas eu não tenho esse código-fonte em torno de mentir.

Foi útil?

Solução

Use a iCalendar biblioteca de implementação, como estas: ruby ??, java , php , python , .net e java , e, em seguida, adicionar suporte para o cálculo de datas especiais

Outras dicas

Com todas estas variações na forma como você especificar a recorrência, eu iria fugir de uma aplicação única estrutura de dados para acomodar todos os 5 cenários.

Em vez disso, eu (e têm por anteriores projeto) Estruturas de construção simples que abordam cada tipo de recorrência. Você pode envolvê-los todos para cima de forma que ela se sente como uma única estrutura de dados, mas sob o capô que poderia fazer o que quiserem. Ao implementar uma interface, eu era capaz de tratar cada tipo de recorrência semelhante portanto sentida como um-all one-size-fits estrutura de dados. Eu poderia perguntar a qualquer instância para todas as datas de recorrência dentro de um determinado período de tempo, e que fez o truque.

Eu também gostaria de saber mais sobre como essas datas devem ser usados ??antes de escolher uma implementação específica.

Se você quiser hands-on criar uma estrutura de dados, eu recomendo uma tabela hash (onde as férias ou evento são teclas com a nova data de ocorrência como um valor), se existem multiplicidades de cada ocorrência que podia haxixe o valor que encontra uma seção em uma lista encadeada, que, em seguida, tem uma lista de todas as ocorrências (isto faria com que encontrar, bem como executar a inserção em o (1)).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top