Ottieni la data corrente, dato un fuso orario in PHP?

G
COME POSSO OTTENERE LA DATA E L'ORA CORRENTI IN PHP?
convertire il timestamp in tempo fa in php?

Le altre risposte impostano il fuso orario per tutte le date nel tuo sistema. Questo non funziona sempre bene se desideri supportare più fusi orari per i tuoi utenti.

OTTIENI LA ​​DATA ATTUALE, DATO UN FUSO ORARIO IN PHP

Ecco la versione breve:

<?php
$date = new DateTime("now", new DateTimeZone('America/New_York') );
echo $date->format('Y-m-d H:i:s');

Funziona in PHP >= 5.2.0

Elenco dei fusi orari supportati: php.net/manual/en/timezones.php


Ecco una versione con un'ora esistente e l'impostazione del fuso orario in base a un'impostazione dell'utente

<?php

$usersTimezone = 'America/New_York';
$date = new DateTime( 'Thu, 31 Mar 2011 02:05:59 GMT', new DateTimeZone($usersTimezone) );
echo $date->format('Y-m-d H:i:s');

Ecco una versione più dettagliata per mostrare il processo un po' più chiaramente

<!-- wp:code -->
<pre class="wp-block-code"><code><?php

// Date for a specific date/time:
$date = new DateTime('Thu, 31 Mar 2011 02:05:59 GMT');

// Output date (as-is)
echo $date->format('l, F j Y g:i:s A');     

// Output line break (for testing)
echo "\n<br />\n";

// Example user timezone (to show it can be used dynamically)
$usersTimezone = 'America/New_York';

// Convert timezone
$tz = new DateTimeZone($usersTimezone);
$date->setTimeZone($tz);

// Output date after 
echo $date->format('l, F j Y g:i:s A');
</code></pre>
<!-- /wp:code -->

Librerie di date PHP

  • Carbonio — Una libreria di date molto popolare.
  • Chronos — Un sostituto del carbonio incentrato sull'immutabilità. Vedi sotto sul perché è importante.
  • jenssegers/data — Un'estensione di Carbon che aggiunge il supporto multilingue.

Sono sicuro che ci sono un certo numero di altre librerie disponibili, ma queste sono alcune con cui ho familiarità.

Oggetti con data immutabile

Se vuoi calcolare 1 settimana da oggi e 2 settimane da oggi. Potresti scrivere del codice come:

<?php

// Create a datetime (now, in this case 2017-Feb-11)
$today = new DateTime();

echo $today->format('Y-m-d') . "\n<br>";
echo "---\n<br>";

$oneWeekFromToday = $today->add(DateInterval::createFromDateString('7 days'));
$twoWeeksFromToday = $today->add(DateInterval::createFromDateString('14 days'));

echo $today->format('Y-m-d') . "\n<br>";
echo $oneWeekFromToday->format('Y-m-d') . "\n<br>";
echo $twoWeeksFromToday->format('Y-m-d') . "\n<br>";
echo "\n<br>";

Il risultato:

2017-02-11 
--- 
2017-03-04 
2017-03-04 
2017-03-04

Non è proprio quello che volevamo. La modifica di un oggetto DateTime tradizionale in PHP non solo restituisce la data aggiornata ma modifica anche l'oggetto originale.

Qui è dove DateTimeImmutable entra in gioco

$today = new DateTimeImmutable();

echo $today->format('Y-m-d') . "\n<br>";
echo "---\n<br>";

$oneWeekFromToday = $today->add(DateInterval::createFromDateString('7 days'));
$twoWeeksFromToday = $today->add(DateInterval::createFromDateString('14 days'));

echo $today->format('Y-m-d') . "\n<br>";
echo $oneWeekFromToday->format('Y-m-d') . "\n<br>";
echo $twoWeeksFromToday->format('Y-m-d') . "\n<br>";

Il risultato:

2017-02-11 
--- 
2017-02-11 
2017-02-18 
2017-02-25 

In questo secondo esempio, otteniamo le date che ci aspettavamo. Usando DateTimeImmutable invece di DateTime, preveniamo le mutazioni di stato accidentali e preveniamo potenziali bug.

COME POSSO OTTENERE LA DATA E L'ORA CORRENTI IN PHP?
convertire il timestamp in tempo fa in php?

Rete di tutor

Condividi questo

Impara PHP dalla A alla Z