Lógica de gerenciamento dos formatos de data e hora

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 aleatórios de formatos de data e hora

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

$pickerdate
yyyy mmm dd HH i a
$icu_format
yyyy MMM dd HH m a
$icu_date
2024 Jan 10 09 10 am
$php_format
Y M d H i a
$php_date
2024 Jan 10 09 10 am

$pickerdate
yyyy m ddd h i a
$icu_format
yyyy M eee h m a
$icu_date
2024 1 Quarta 9 10 am
$php_format
Y n D g i a
$php_date
2024 1 Quarta 9 10 am

$pickerdate
yy mm dd h i a
$icu_format
yy MM dd h m a
$icu_date
24 01 10 9 10 am
$php_format
y m d g i a
$php_date
24 01 10 9 10 am

$pickerdate
yyyy m dd HH i a
$icu_format
yyyy M dd HH m a
$icu_date
2024 1 10 09 10 am
$php_format
Y n d H i a
$php_date
2024 1 10 09 10 am

$pickerdate
yyyy mmm dddd HH i a
$icu_format
yyyy MMM eeee HH m a
$icu_date
2024 Jan Quarta-feira 09 10 am
$php_format
Y M l H i a
$php_date
2024 Jan Quarta-feira 09 10 am

$pickerdate
yy mmmm d h i a
$icu_format
yy MMMM d h m a
$icu_date
24 de janeiro 10 9 10 am
$php_format
y F j g i a
$php_date
24 de janeiro 10 9 10 am

$pickerdate
yy mmmm ddd HH i A
$icu_format
yy MMMM eee HH m a
$icu_date
24 de janeiro Qua 09 10 am
$php_format
y F D H i a
$php_date
24 de janeiro Qua 09 10 am

$pickerdate
yy mmmm dd HH i A
$icu_format
yy MMMM dd HH m a
$icu_date
24 de janeiro 10 09 10 am
$php_format
y F d H i a
$php_date
24 de janeiro 10 09 10 am

$pickerdate
yy mmm dd H i A
$icu_format
yy MMM dd H m a
$icu_date
24 jan 10 9 10 am
$php_format
y M d G i a
$php_date
24 jan 10 9 10 am

$pickerdate
yy mmmm d H i a
$icu_format
yy MMMM d H m a
$icu_date
24 de janeiro 10 9 10 am
$php_format
y F j G i a
$php_date
24 de janeiro 10 9 10 am

Página principal do tutorial PHP CRUD