En miles de aplicaciones web tenemos editores de horarios, visualmente son algo como esto:
En TimeTime tenemos esto modelado de la siguiente forma:
const schedule: {
timezone: 'Europe/Madrid',
workingHours: {
mon: [{ start: '09:00', end: '13:00' }, { start: '15:00', end: '18:00' }],
tue: [{ start: '09:00', end: '13:00' }, { start: '15:00', end: '18:00' }],
wed: [{ start: '09:00', end: '13:00' }, { start: '15:00', end: '18:00' }],
thu: [{ start: '09:00', end: '13:00' }, { start: '15:00', end: '18:00' }],
fri: [{ start: '09:00', end: '13:00' }, { start: '15:00', end: '17:00' }],
sat: [{ start: '10:00', end: '14:00' }],
sun: [], // Domingo libre
}
}
Sin embargo este formato tiene una serie de problemas. La más evidente es que es complicado modelar horarios que no cierran a medianoche. Por ejemplo un bar que abra de 10:30 a 03:00.
La pregunta es muy sencilla, (la solución quizá no)
¿Qué formato se te ocurre para modelar horarios?
👉 Ten en cuenta los diferentes escenarios que se puedan dar.
👉 Los autores de las mejores respuestas recibirán entradas para la http://jsconf.es/ por cortesía de TimeTime.
👉 Puedes participar contestando a este gist, o por twitter, citando a @iagolast o a @odin_delrio
👉 No intentes copiar de nuestra API. Está mal y tenemos que actualizarla
Formato Propuesto
Soporte para intervalos cruzando medianoche
Cuando start > end, significa que el turno termina al día siguiente.
Por ejemplo, si start: "18:00" y end: "03:00", el horario realmente es: