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:
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?
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
}