web-dev-qa-db-fra.com

Algorithme pour trouver des temps de rendez-vous?

J'ai une situation étrange où un client voudrait un script qui définit automatiquement des milliers de rendez-vous sur plusieurs jours. La partie délicate est que les rendez-vous sont destinés à une variété de fuseaux horaires américains, et je dois prendre en compte le fuseau horaire local du consommateur lors de la génération de dates et de temps de rendez-vous pour chaque enregistrement.

Règles de nomination:

  • Les rendez-vous doivent être définis de 8h à 20h à 20h00 de l'heure normale de l'Est, avec des pauses de 12p-2p et de 4p-6p. Cela laisse un total de 8 heures par jour disponible pour établir des rendez-vous.

  • Les rendez-vous devraient être programmés à 5 minutes de distance. 8 heures d'intervalles de 5 minutes signifie 96 rendez-vous par jour.

  • Il y aura 5 utilisateurs à une rendez-vous de la manutention. 96 Nominations par jour multiplié par 5 utilisateurs est égale à 480, le nombre maximal de rendez-vous pouvant être définis par jour est de 480.

  • Maintenant, l'exigence délicate: les rendez-vous sont limités à 8h00 à 20h dans le Zone heure locale du consommateur. Cela signifie que le temps le plus acharné autorisé pour chaque rendez-vous est différent selon le fuseau horaire du consommateur:

    • Oriental: 8a
    • CENTRALE: 9A
    • Montagne: 10a
    • Pacifique: 11a
    • Alaska: 12p
    • Hawaii ou indéfini: 2p
    • Arizona: 10A ou 11a basé sur l'heure actuelle de l'écart d'éclairage

En supposant qu'un ensemble de données puisse comporter plusieurs milliers d'enregistrements, et chaque enregistrement contiendra une valeur de fuseau horaire, existe-t-il un algorithme que je pourrais utiliser pour déterminer une date et une heure pour chaque enregistrement correspondant aux règles ci-dessus?

4
Rachel

Je créerais une interface pour les fuseaux Timezones en utilisant une heure militaire (24 heures).

Comme dans, pour le fuseau horaire x, est = temps; CST = temps + 1; MST = Time + 2;

etc.

Ainsi, vous pourriez passer le fuseau horaire à votre fonction de rendez-vous, puis le temps serait automatiquement calculé lorsque vous créez ou modifiez un rendez-vous. Dans la fonction de rendez-vous, vous pouvez facilement mettre en place si/puis logique pour les pauses, comme:

    if((time>12:00 && time<14:00) || (time>16:00 && time<18:00)){
    //code for break time, no appointments made here, timezone lets you use the current timezone you're in
    }
0
Joe R.