Gerenciando formatos de data e hora em aplicativos PHP
Guia técnico para desenvolvedores

O painel de administração do Bootstrap precisa fazer malabarismos com diferentes formatos de data e hora, dependendo da situação. Veja como isso funciona.


Os diferentes formatos de data e hora

Lista dos formatos de data, data e hora usados no PHP CRUD Generator

Páginas Uso Idioma Formato
LER listas Data legível por humanos traduzida de acordo com o idioma do usuário PHP com extensão intl ativada UTI *
LER listas Data legível por humanos NÃO traduzida PHP sem a extensão intl ativada Formato de data PHP **
Formulários CREATE / UPDATE Plug-ins do Datepicker Javascript Formatos do plugin Pickadate ***
Objetos PHP Campos de data, hora e data e hora do banco de dados PHP/MySQL Y-m-d H:i:s

*UTI - https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/classSimpleDateFormat.html#details

**Lista de formatos de data do PHP: https://www.php.net/manual/en/function.date.php

***Listade formatos de data do Pickadate: https://amsul.ca/pickadate.js/date/


Gerenciamento de formatos de data e hora PHP/JavaScript no painel de administração

Formatos de data e hora no Generator e no painel do administrador

  1. Quando o senhor define um formato de data/hora em uma lista READ do gerador, sua escolha é armazenada em um arquivo interno(generator/database/phpcg/[your_table].json).

    O formato armazenado é o formato Javascript

    Os selecionadores de data e hora do formulário de administração usarão esse formato, + um campo oculto com um sufixo"_submit" para enviar os valores no formato de data/hora do MySQL.

  2. O modelo de lista TWIG READ precisará posteriormente converter a data/hora do valor MySQL para o formato legível por humanos.
    Para isso, o formato Javascript é convertido pelo gerador em PHP ICU por generator/class/generator/TemplatesUtilities.php. O formato PHP ICU gerado será passado como argumento no modelo TWIG para converter a data/hora do MySQL para o formato legível por humanos.

    A função é pickerdateToPhpdate($pickerdate)

  3. A classe de item constrói o valor do objeto usando o formato PHP/MySQL (sem conversão de formato)

  4. O modelo TWIG da lista READ chama a função formatDate($date, $format) em vendor/twig/twig/lib/Twig/Extension/CrudTwigExtension.php

    O $date fornecido está no formato PHP/MySQL e pode ser uma data, uma hora ou um datetime.

    O $format fornecido é o formato ICU.

    • Se a extensão PHP intl estiver ativada, ela mostrará a data traduzida de acordo com suas configurações de idiomas com IntlDateFormatter::formatObject() usando Locale::getDefault()
    • Se a extensão PHP intl não estiver ativada, ela converterá a data/hora da UTI para o formato clássico de data do PHP

Exemplos de formatos de data e hora aleatórios

Os datetimes abaixo são gerados a partir de um formato aleatório usando a mesma lógica do CRUD Generator.

$pickerdate
yy m dddd H i a
$icu_format
yy M eeee H m a
$icu_date
25 2 Quarta-feira 9h50
$php_format
y n l G i a
$php_date
25 2 Quarta-feira 9h50

$pickerdate
yyyy mmm dd H i A
$icu_format
yyyy MMM dd H m a
$icu_date
2025 Feb 19 9 50 am
$php_format
Y M d G i a
$php_date
2025 Feb 19 9 50 am

$pickerdate
yyyy m dddd HH i A
$icu_format
yyyy M eeee HH m a
$icu_date
2025 2 Quarta-feira 09h50
$php_format
Y n l H i a
$php_date
2025 2 Quarta-feira 09h50

$pickerdate
yy mm dddd H i A
$icu_format
yy MM eeee H m a
$icu_date
25 02 Quarta-feira 9h50
$php_format
y m l G i a
$php_date
25 02 Quarta-feira 9h50

$pickerdate
yy mmm ddd h i A
$icu_format
yy MMM eee h m a
$icu_date
25 de fevereiro Qua 9h50
$php_format
y M D g i a
$php_date
25 de fevereiro Qua 9h50

$pickerdate
yy mm dd H i a
$icu_format
yy MM dd H m a
$icu_date
25 02 19 9 50 am
$php_format
y m d G i a
$php_date
25 02 19 9 50 am

$pickerdate
yy mmmm ddd h i A
$icu_format
yy MMMM eee h m a
$icu_date
25 de fevereiro Qua 9h50
$php_format
y F D g i a
$php_date
25 de fevereiro Qua 9h50

$pickerdate
yy mmm d hh i a
$icu_format
yy MMM d hh m a
$icu_date
25 de fevereiro de 19 09h50
$php_format
y M j h i a
$php_date
25 fev 19 09 50 am

$pickerdate
yyyy mm dd HH i a
$icu_format
yyyy MM dd HH m a
$icu_date
2025 02 19 09 50 am
$php_format
Y m d H i a
$php_date
2025 02 19 09 50 am

$pickerdate
yyyy mm d h i A
$icu_format
yyyy MM d h m a
$icu_date
2025 02 19 9 50 am
$php_format
Y m j g i a
$php_date
2025 02 19 9 50 am

Página principal do tutorial PHP CRUD