class DTime

Classe Pubblica senza dipendenze.

I Metodi:

  1. data_info()
  2. ztime()
  3. list_ztime()
  4. hmd()

La classe lavora con le date e ne facilita la loro gestione ed estrazione dei dati. Il suo utilizzo dovrebbe risultare semplice.


data_info():

Questo metodo può essere utilizzato in due modi distinti.

Il primo:

$data = '2017/08/24';
$info_data = DTime::data_info('Y-m-d', $data, 0);
print_r($info_data);

Il risultato dovrebbe essere:

Array ( [Y] => 2017 [y] => 17 [m] => 08 [d] => 24 [w] => 4 [N] => 4 [H] => 10 [i] => 02 [s] => 00 [P] => +02:00 [U] => 1503561720 )

Da una data estrae tutte le informazioni utili e le trasforma in un array. Per conoscere il significato delle chiavi, fare riferimento alla guida ufficile di PHP.

Il secondo:

$data = '2017-08-24';
$info_data = DTime::data_info('Y-m-d', $data, array('/', 'd', 'm', 'Y'));
echo $info_data;

Il risultato dovrebbe essere una stringa:

24/08/2017

 Nel secondo metodo abbiamo aggiunto il terzo valore che è composto da un array.

Il primo valore dovrà essere il separatore con il quale formattare la data. I successivi valori dovranno contenere i format character  che ne estrarranno i valori.


ztime():

Questo metodo verifica e gestisce la timezone (fuso orario).
Come sappiamo Roma ha un fusorario differente da quello di Londra. Se vogliamo che un dato evento avvenga alle 20:00 di sera sia a Roma che a Londra potremmo utilizzare questo metodo in quanto intercetta la differenza di data/ora.

All'interno del file di configurazione ./Config/config.php abbiamo impostato come valore di default _TIME_ZONE_ => Europe/Rome

Facciamo un esempio pratico. Scriviamo questo codice all'interno del Model:

print_r(DTime::ztime('Y-m-d H:i:s'));

Potremmo avere un risultato simile al seguente (ovviamente con data ed orario differente):

Array ( [date] => 2017-08-24 10:36:30 [time] => 1503563790 ) 

Se proviamo a modificare le impostazioni del _TIME_ZONE_ in Europe/London dovremmo avere un risultato simile:

Array ( [date] => 2017-08-24 09:36:40 [time] => 1503560220 ) 

Salta subito agli occhi la differenza  di orario con un ora di differenza.

Un altro sistema per utilizzare questo metodo potrebbe essere:

echo DTime::ztime('Y-m-d H:i:s')['time'];
echo DTime::ztime('Y-m-d')['date'];
echo DTime::ztime('H:i')['date'];
echo DTime::ztime('Y-m-d', '2017-02-15')['date'];
echo DTime::ztime('w', '2017-02-14')['date'];
echo DTime::ztime('d/m/Y H:i:s')['date'];

Che dovrebbe mostrare qualcosa di simile:

1503560573
2017-08-24
09:42
2017-02-15
2
24/08/2017 09:42:53

Note: L'orario è gestito direttamente dal server, quindi se è posto in Italia avremo l'ora italiana, se è situato a Londra avremmo l'ora di Londra, etc..


list_ztime():

Se la nostra necissità è quella di gestire le Time Zone o Fuso Orari in modo dinamico, potremmo utilizzare questo metodo che estrae ed inserisce in un array la lista completa.

print_r(DTime::list_ztime());

Avremmo qualcosa di simile:

Array
(
    [0] => Australia/Adelaide
    [1] => Australia/Broken_Hill
    [2] => Australia/Darwin
    [3] => Australia/North
    [4] => Australia/South
    [5] => Australia/Yancowinna
    [6] => America/Porto_Acre
    [7] => Australia/Adelaide
    ...


hmd():

Se invece abbiamo necessità di calcolare il numero di giorni che separa due date, potremmo utilizzare questo metodo:

Un esempio concreto:

echo DTime::hmd('2016-12-31','2017-01-07');

Il risultato dovrebbe essere 8;

Potremmo invertire anche le date cioè inserire come primo valore 2017-01-07 e come secondo 2016-12-31... il risultato sarebbe lo stesso ;-)


Lista dei Blocchi