2017-10-10 3 views
2

Comment pourrait-on décrire (de préférence de manière conforme aux normes) certains intervalles de temps récurrents, mais imprécis dans un JSON? Par exemple, comment décrire un produit qui peut être acheté tous les jours mais seulement le matin, de 9h à 11h?Comment décrire les intervalles de temps incomplets récurrents?

Quelque chose comme

"product": { "id": 42, "purchaseInterval": ??? }

+3

Le format iCal RRULE est la chose à utiliser. Il peut formuler presque chaque règle de répétition impaire. Tous les jours de 9 à 11 ressemblerait probablement à quelque chose comme «RRULE: FREQ = DAILY; BYHOUR = 9,10,11». La norme applicable est RFC 2445. Regardez quelques [exemples pratiques] (https://docs.oracle.com/cd/B28359_01/server.111/b28310/scheduse004.htm#ADMIN12415), le [spec] (https : //icalendar.org/iCalendar-RFC-5545/3-8-5-3-recurrence-rule.html) et une [page d'aide pratique] (https://www.kanzaki.com/docs/ical/) sur le format iCal. Les bibliothèques d'analyseurs sont largement disponibles, mais pas nécessairement toutes les fonctionnalités. – Tomalak

+0

Si vous utilisez un événement de trois heures et que vous le répétez simplement tous les jours, toute implémentation iCalendar peut le faire. – Tomalak

Répondre

0

Vous pouvez utiliser le format 24 hour et spécifier la plage comme

"product": { "id": 42, "purchaseInterval": "9:00-11:00" } 
+0

Cela ne répond pas à la partie "récurrente" de la question, ni aux normes. – pipacs

0

étant des valeurs possibles de frequencyUnit ENUM: années, mois, semaines, jours

Je pense que vous pouvez avoir une description très standard/facile à comprendre/complète avec le JSON suivant:

"product": { 
    "id": 42, 
     "purchaseInterval": { 
      "startTime": "9:00", 
      "endTime": "11:00", 
      "frequencyUnit": "weeks", 
      "frequencyValue": 1, 
      "weekdays": ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"] 
    } 
} 

En outre, considérons les jours de la semaine comme une autre collection enum.