timestamp dei giorni successivi (senza problema dell’ora legale)


Mi sono sempre chiesto come fare a calcolare il timestamp di n giorni prima/dopo il giorno corrente(in pratica come aggiungere o togliere dei giorni al timestamp).
Verrebbe subito da pensare che basti fare $giorno = time()+$n*86400 ma ciò non tiene conto dell’ora legale, quindi per far ciò ho realizzato una funzione che andava ad analizzare il fuso orario per ogni giorno e così andava a vedere se sommare o sottrarre dei minuti, ma anche in questo caso non era il metodo più efficiente.

Un giorno facendo varie prove mi sono accorto che la soluzione ci viene offerta dal php stesso con la funzione mktime() che accetta come parametri giorni successivi a quelli del mese corrente, modificando lei stessa il mese.

Vediamo come utilizzarla:

<?php
$n = 60;
$data = getdate();
$giorno = mktime(0,0,0,$data['mon'],$data['mday']+$n,$data['year']);
?>

Dove $n è il numero di gironi da sommare, che può anche essere negativo se si vogliono i timestamp di date precedenti.
In questo caso il timestamp finale corrisponde sempre alla mezzanotte del giorno scelto, ma volendo si può facilmente mettere un orario costante oppure uguale a quello corrente.

CC BY-SA 4.0 timestamp dei giorni successivi (senza problema dell’ora legale) by cardinale claudio is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Lascia un commento