Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Arrotondare al quarto d'ora più vicino

    Ciao a tutti! La mia domande del giorno è:

    come faccio ad arrotondare un orario al quarto d'ora più vicino?

    per esempio sono le 12.29 in questo momento e vorrei ottenere 12.30, piuttosto che 12.15.
    Come faccio phpemente parlando?

    usavo
    codice:
    $minuti=floor(date("i")/15)*15;
    ..ma in questo modo arrotondavo sempre al quarto d'ora precedente..
    Www.Spritzlandia.it - Community dedicata agli amanti del famoso aperitivo. Amici, Blog, Chat, annunci gratis. Eventi in Pub, Discoteche e Pizzerie a Padova, Venezia, Treviso.

  2. #2
    usa la funzione round()...

  3. #3
    al posto di floor puoi usare ceil
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  4. #4

    come faccio ad arrotondare un orario al quarto d'ora più vicino?
    al posto di floor puoi usare ceil
    Ma mettendo ceil dovrebbe arrotondare al valore più alto non a quello più vicino...

  5. #5
    Sto tentando con round...sembra funzionare...
    il problema si pone quando i minuti sono vicini al sessantesimo..e quindi tocca aggiungere 1 unità alla variabile ora.
    Www.Spritzlandia.it - Community dedicata agli amanti del famoso aperitivo. Amici, Blog, Chat, annunci gratis. Eventi in Pub, Discoteche e Pizzerie a Padova, Venezia, Treviso.

  6. #6
    puoi aggiungere la condizione:
    Codice PHP:
    if($minuti==60)
    {
    $minuti=0;


  7. #7
    ho fatto cosi

    Codice PHP:
    $ora date("H");
    $minuti=round(date("i")/15)*15;
    if(
    $minuti == 60) {
    $ora $ora+1;
    $minuti '00';
    $orario = ($ora.":".$minuti);

    Www.Spritzlandia.it - Community dedicata agli amanti del famoso aperitivo. Amici, Blog, Chat, annunci gratis. Eventi in Pub, Discoteche e Pizzerie a Padova, Venezia, Treviso.

  8. #8
    Si va bene..
    cmq le parentesi qui possono essere tranquillamente tolte:
    Codice PHP:
    $orario $ora.":".$minuti

  9. #9
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Originariamente inviato da Asia82
    ho fatto cosi

    Codice PHP:
    $ora date("H");
    $minuti=round(date("i")/15)*15;
    if(
    $minuti == 60) {
    $ora $ora+1;
    $minuti '00';
    $orario = ($ora.":".$minuti);

    e se sono le 23:55 ?

  10. #10
    le operazioni, se non è necessario altrimenti, vanno fatte su uno unix timestamp altrimenti diventa MOLTO più complicato gestire correttamente tutte le situazioni

    per avere un arrotondamento al 15° minuto conviene fare qualcosa del genere

    codice:
    $minutes = (int)(time() / 60);
    $needToRound = ($minutes % 15) > 0 ?  15 - ($minutes % 15) : 0;
    $timestampRounded = ($minutes + $needToRound) * 60;
    
    echo date('d/m/Y H:i:s', $timestampRounded);
    Questo codice non tiene conto dei secondi (come fa attualmente il tuo) nel senso che se sono le 14:30:05 verrà sempre arrotondato alle 14:30:00

    Altrimenti, per tenere conto anche dei secondi

    codice:
    $timestamp = time();
    $needToRound = ($timestamp % (15*60)) > 0 ?  (15*60) - ($timestamp % (15*60)) : 0;
    $timestampRounded = $timestamp + $needToRound;
    
    echo date('d/m/Y H:i:s', $timestampRounded);
    Ho fatto qualche test è sembra comportarsi correttamente
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

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 © 2025 vBulletin Solutions, Inc. All rights reserved.