DateTimeZone::__construct

timezone_open

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

DateTimeZone::__construct -- timezone_openCria um novo objeto DateTimeZone

Descrição

Estilo orientado a objetos

public DateTimeZone::__construct(string $timezone)

Estilo procedural

Cria um novo objeto DateTimeZone.

Um objeto DateTimeZone dá acesso a três diferentes tipos de regras de fuso horário: deslocamento UTC (tipo 1), abreviação de fuso (tipo 2), e identificadores de fuso horário como publicado no banco de dados de fusos horários da IANA (tipo 3).

O objeto DateTimeZone pode ser anexado aos objetos DateTime e DateTimeImmutable para que sejam capazes de mostrar o fuso horário encapsulado por estes objetos em um fuso horário local.

Parâmetros

timezone

Um dos nomes de fuso horário suportados, um valor de deslocamento (+0200), ou um identificador de fuso (BST).

Valor Retornado

Retorna um objeto DateTimeZone em caso de sucesso. Estilo procedural retorna false em caso de falha.

Erros/Exceções

Este método lança uma exceção DateInvalidTimeZoneException se o fuso horário informado não for reconhecido com um fuso horário válido. Antes do PHP 8.3, era uma exceção Exception.

Registro de Alterações

Versão Descrição
8.3.0 Invalid values now return a DateInvalidTimeZoneException instead of a generic Exception.

Exemplos

Example #1 Criando e anexando DateTimeZone a um DateTimeImmutable

<?php
$d = new DateTimeImmutable("2022-06-02 15:44:48 UTC");

$timezones = [ 'Europe/London', 'GMT+04:45', '-06:00', 'CEST' ];

foreach ($timezones as $tz) {
    $tzo = new DateTimeZone($tz);

    $local = $d->setTimezone($tzo);
    echo $local->format(DateTimeInterface::RFC2822 . ' — e'), "\n";
}
?>

O exemplo acima produzirá:


Thu, 02 Jun 2022 16:44:48 +0100 — Europe/London
Thu, 02 Jun 2022 20:29:48 +0445 — +04:45
Thu, 02 Jun 2022 09:44:48 -0600 — -06:00
Thu, 02 Jun 2022 17:44:48 +0200 — CEST

Example #2 Capturando erros na instanciação de DateTimeZone

<?php
// Lidando com erros através de captura de exceções
$timezones = array('Europe/London', 'Mars/Phobos', 'Jupiter/Europa');

foreach ($timezones as $tz) {
    try {
        $mars = new DateTimeZone($tz);
    } catch(Exception $e) {
        echo $e->getMessage() . '<br />';
    }
}
?>

O exemplo acima produzirá:

DateTimeZone::__construct() [datetimezone.--construct]: Unknown or bad timezone (Mars/Phobos)
DateTimeZone::__construct() [datetimezone.--construct]: Unknown or bad timezone (Jupiter/Europa)