Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 16 su 16

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2022
    Messaggi
    88
    Quote Originariamente inviata da Dascos Visualizza il messaggio
    Dipende!
    Nel senso, se a te serve sapere anche il giorno/mese/anno allora usi i valori reali e costruisci quello che ti serve con mktime e/o date.
    Se non ti serve giorno/mese/anno, usi un "falso" giorno su cui poi fai i calcoli di sommare, sottrarre, confrontare ecc ecc.
    In pratica, se non ti serve avere una data reale e completa, siccome unixtimestamp è una convenzione che conta i secondi a partire da un giorno preciso (01/01/1970), tu "fai finta" che ogni intervallo sia riferito a quel momento (dale 00:00:00 del 01/01/1970 fino alle 23:59:59 del 01/01/1970) e il calcolo ti viene facile usando solo ore:minuti:secondi (o ore:minuti)

    :-D
    In realtà questi appuntamenti vengono fissati durante i vari giorni della settimana o del mese, ma per me non fa differenza. A me interessa solo sapere che, dopo aver inserito tutti gli appuntamenti, mi rimangono degli orari nei quali sicuramente l'operatore sarà libero indipendentemente dal giorno che scelgo.

    Mettiamo per assurdo che un operatore abbia in totale un solo appuntamento, sempre di lunedì e sempre dalle 12:00 alle 13:00. Gli altri giorni della settimana l'operatore sarà disponibile dalle 12:00 alle 13:00, ma non è un dato che mi interessa. Mi serve solo sapere che qualunque giorno io scelga, dalle 00:00 alle 11:59 e poi dalle 13:01 alle 23:59 sia sempre disponibile

    Ecco perché voglio lavorare su un giorno ipotetico (purtroppo con il problema che un appuntamento possa accavallarsi come orario).
    Ultima modifica di jip77; 23-02-2023 a 19:12

  2. #2
    Integro la risposta

    date_default_timezone_set('UTC');
    echo mktime(0, 0, 3, 1, 1, 1970);

    Ti restituirà "3", cioè 3 secondi a partire dalla mezzanotte del 1/1/1970...vedi da te che fare i conteggi prendendo un orario relativo al 1/1/70 viene facile....

    inizio appuntamento 09:31. Noi facciamo finta che sia 09:31 del 1/1/1970, quindi lo unixtimestamp sarà

    echo mktime(9, 31, 0, 1, 1, 1970);

    cioè 34260 secondi. Se finisse alle 11:12 allora avremmo

    echo mktime(11, 12, 0, 1, 1, 1970);

    cioè 40320 secondi.

    A quel punto i calcoli vengono da soli

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2022
    Messaggi
    88
    Ho iniziato i lavori...
    Per ogni operatore ho creato una stringa contenente tutti gli appuntamenti (orario di inizio / orario di fine) divisi dai trattini. Nel creare la lista, tramite la funzione strpos sono riuscito a togliere anche gli appuntamenti identici (stesso orario di inizio e di fine). . La situazione è questa:

    04:20/04:30---05:50/06:00---13:00/13:10---14:50/15:00---15:45/16:00---17:50/18:00---18:30/18:45---20:15/20:20---22:00/22:15---00:40/00:45---00:45/00:50---07:15/07:30---06:50/07:00---14:00/14:10---15:50/16:00---16:45/17:00---18:50/19:00---21:15/21:20---23:00/23:15---01:40/01:45---01:45/01:50---19:30/19:45---08:15/08:30---16:20/16:30---22:15/22:30---23:15/23:30---15:00/15:10---20:30/20:45---05:30/05:45---06:30/06:45---16:00/16:10---16:50/17:00---17:00/17:15---18:45/19:00---18:00/18:15---19:45/20:00

    Ora, tramite la funzione explode, creo un array sfruttando questa lista e subito dopo lo riordino in ordine crescente (i trattini li rimetto solo per la stampa):

    00:40/00:45---00:45/00:50---01:40/01:45---01:45/01:50---04:20/04:30---05:30/05:45---05:50/06:00---06:30/06:45---06:50/07:00---07:15/07:30---08:15/08:30---13:00/13:10---14:00/14:10---14:50/15:00---15:00/15:10---15:45/16:00---15:50/16:00---16:00/16:10---16:20/16:30---16:45/17:00---16:50/17:00---17:00/17:15---17:50/18:00---18:00/18:15---18:30/18:45---18:45/19:00---18:50/19:00---19:30/19:45---19:45/20:00---20:15/20:20---20:30/20:45---21:15/21:20---22:00/22:15---22:15/22:30---23:00/23:15---23:15/23:30

    A questo punto c'è un modo per unire gli appuntamenti che si accavallano e quelli che sono già uniti, perché non ci sono minuti di intervallo (es. 22:00/22:15 con 22:16/22:35)?

    Diciamo che mi potrei già accontentare, perché si riesce a risalire agli orari disponibili. E' anche vero che visualizzare direttamente gli orari disponibili sarebbe tutta un'altra cosa. A questo punto come mi consigliate di procedere?
    Ultima modifica di jip77; 23-02-2023 a 22:21

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2022
    Messaggi
    88
    Per adesso sono riuscito ad unire due appuntamenti che si accavallano, ma se ne sono più di due che si susseguono, ho ancora qualche problema:

    00:40/00:50---01:40/01:50---04:20/04:30---05:30/05:45---05:50/06:00---06:30/06:45---06:50/07:00---07:15/07:30---08:15/08:30---13:00/13:10---14:00/14:10---14:50/15:10---15:45/16:00---15:50/16:10---16:20/16:30---16:45/17:00---16:50/17:15---17:50/18:15---18:30/19:00---18:45/19:00---19:30/20:00---20:15/20:20---20:30/20:45---21:15/21:20---22:00/22:30---23:00/23:30

  5. #5
    visto che non puoi lavorare con la tabella, predisponi una matrice di 1440 elementi e riempila con gli appuntamenti già presi (metti a 1 dal minuto di inizio al minuto di fine). i periodi a zero sono quelli liberi

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2022
    Messaggi
    88
    Intanto sono riuscito a fare un'ulteriore scrematura (da 36 ne sono rimasti 22). Ho tolto anche i casi in cui sono più di 2 appuntamenti che si accavallano in successione. Ho gli elementi in un array, ma per la stampa ho usato i trattini per dividerli:

    00:40/00:50---01:40/01:50---04:20/04:30---05:30/05:45---05:50/06:00---06:30/06:45---06:50/07:00---07:15/07:30---08:15/08:30---13:00/13:10---14:00/14:10---14:50/15:10---15:45/16:10---16:20/16:30---16:45/17:15---17:50/18:15---18:30/19:00---19:30/20:00---20:15/20:20---20:30/20:45---21:15/21:20---22:00/22:30---23:00/23:30

    Quote Originariamente inviata da optime Visualizza il messaggio
    visto che non puoi lavorare con la tabella, predisponi una matrice di 1440 elementi e riempila con gli appuntamenti già presi (metti a 1 dal minuto di inizio al minuto di fine). i periodi a zero sono quelli liberi
    Qui mi serve un aiuto, è al di sopra delle mie possibilità

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.