Visualizzazione dei risultati da 1 a 5 su 5

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875

    Sottrarre 30 giorni ad una data

    Buongiorno
    nel database ho una data (data_arrivo) in formato 2022-06-30 (30 giugno 2022)
    A questa data vorrei sottrarre 30 giorni (o un altro numero)

    In pratica voglio indicare che il pagamento deve essere fatto 30 giorni prima dell'arrivo

    C'e' una funzione particolare per farlo oppure posso fare qualcosa tipo:

    $data_pagamento=($data_arrivo-30);

    inoltre, una volta effettuato questo calcolo, come posso "italianizzare" il risultato mostrando 30/05/2022?

    Ricordo che in passato ho avuto problemi per il calcolo delle notti quando le date erano a cavallo di 2 mesi, per questo per sicurezza ho chiesto qui.

    Grazie
    Ultima modifica di allin81; 15-02-2022 a 11:23

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    192
    Non è propriamente così semplice, nemmeno consultando parte del manuale invece se guardi l'esempio 3 vedrai che in php un mese è relativo al precedente.
    Codice PHP:
    $date = new DateTime('2022-02-28 Europe/Rome');
    $date2 = new DateTime($date->format('Y-m-d H:i:s') . ' Europe/Rome -30 days');
    var_dump($date2); 
    Io ti consiglio due oggetti e ovviamente nel tuo database se di tipo data dovrà utilizzare il timezone Europe/Rome.
    Aritmetica DateTime https://www.php.net/manual/en/dateti...arithmetic.php (periodo di transizione e anche il mese però nei confronti di php che differisce dal calcolo umano).

  4. #4
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    Solo ora ho letto

    nel frattempo ho trovato una discussione online dove chiedevano la mia stessa cosa e facevano riferimento a questo codice.
    Sembra funzionare bene, posso avere problemi?

    codice:
    $data_pagamento_acconto = strtotime('-30 days', strtotime($data_arrivo));
    $data_pagamento_acconto=date("d/m/Y",$data_pagamento_acconto);

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    192
    Come la maggior parte dei codici non è assicurato il corretto funzionamento, oltretutto la funzione date o DateTime usa il timezone impostato che può differire con quello che tu ti aspetti, nel codice seguente il timezone è esplicito.
    Cosa non capisci da questo codice?
    Codice PHP:
    $date = new DateTime('2022-02-28 Europe/Rome');
    $date2 = new DateTime($date->format('Y-m-d H:i:s') . ' Europe/Rome -30 days'); // Relative Time Format ma sottraggo 30 giorni al timezone UTC e solo in un secondo momento verrà convertito nel timezone Europe/Rome

    var_dump($date2);
    //$date2 è oggetto DateTime e format ti consente come mostrare l'output della data 
    Inoltre per limitare malfunzionamenti è sufficiente studiare, https://forum.html.it/forum/showthre...1#post25568490

    Per essere sicuro che la lettura sia chiara ti pongo io due domande, cosa vuol dire periodo di transizione? Cosa vuol dire calcolo aritmetico DateTime inerente a +1 month?
    Ultima modifica di darbula; 16-02-2022 a 14:55

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.