Files
archived-doc-pt-br/reference/datetime/datetimeinterface/format.xml
Leonardo Lara Rodrigues 0daf9218ca fix and improve translation
2025-06-04 10:43:47 -03:00

514 lines
19 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 7f7fce55c075567a9b964be1d6ff131922930b17 Maintainer: lhsazevedo Status: ready --><!-- CREDITS: fabioluciano, lhsazevedo, leonardolara -->
<refentry xml:id="datetime.format" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>DateTimeInterface::format</refname>
<refname>DateTimeImmutable::format</refname>
<refname>DateTime::format</refname>
<refname>date_format</refname>
<refpurpose>Retorna a data formatada de acordo com um formato informado</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<para>&style.oop;</para>
<methodsynopsis role="DateTimeInterface">
<modifier>public</modifier> <type>string</type><methodname>DateTimeInterface::format</methodname>
<methodparam><type>string</type><parameter>format</parameter></methodparam>
</methodsynopsis>
<methodsynopsis role="DateTimeImmutable">
<modifier>public</modifier> <type>string</type><methodname>DateTimeImmutable::format</methodname>
<methodparam><type>string</type><parameter>format</parameter></methodparam>
</methodsynopsis>
<methodsynopsis role="DateTime">
<modifier>public</modifier> <type>string</type><methodname>DateTime::format</methodname>
<methodparam><type>string</type><parameter>format</parameter></methodparam>
</methodsynopsis>
<para>&style.procedural;</para>
<methodsynopsis>
<type>string</type><methodname>date_format</methodname>
<methodparam><type>DateTimeInterface</type><parameter>object</parameter></methodparam>
<methodparam><type>string</type><parameter>format</parameter></methodparam>
</methodsynopsis>
<para>
Retorna a data formatada de acordo com um formato informado.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<variablelist>
&date.datetime.description;
<varlistentry>
<term><parameter>format</parameter></term>
<listitem>
<para>
O formato da <type>string</type> de data resultante. Veja abaixo as
opções de formatação. Existem também várias
<link linkend="datetimeinterface.constants.types">constantes de data predefinidas</link>
que podem ser usadas, por exemplo, <constant>DATE_RSS</constant>
contém a string de formatação <literal>'D, d M Y H:i:s'</literal>.
</para>
<para>
<table>
<title>Os seguintes caracteres são reconhecidos na
string do parâmetro <parameter>format</parameter></title>
<tgroup cols="3">
<thead>
<row>
<entry>Caractere <parameter>format</parameter></entry>
<entry>Descrição</entry>
<entry>Exemplo de valores retornados</entry>
</row>
</thead>
<tbody>
<row>
<entry align="center"><emphasis>Dia</emphasis></entry>
<entry>---</entry>
<entry>---</entry>
</row>
<row>
<entry><literal>d</literal></entry>
<entry>Dia do mês, 2 digits com zeros à esquerda</entry>
<entry><literal>01</literal> a <literal>31</literal></entry>
</row>
<row>
<entry><literal>D</literal></entry>
<entry>Uma representação textual de um dia, três letras</entry>
<entry><literal>Mon</literal> a <literal>Sun</literal></entry>
</row>
<row>
<entry><literal>j</literal></entry>
<entry>Dia do mês sem zeros à esquerda</entry>
<entry><literal>1</literal> a <literal>31</literal></entry>
</row>
<row>
<entry><literal>l</literal> (lowercase 'L')</entry>
<entry>Uma representação textual completa do dia da semana</entry>
<entry><literal>Sunday</literal> a <literal>Saturday</literal></entry>
</row>
<row>
<entry><literal>N</literal></entry>
<entry>Representação numérica ISO 8601 do dia da semana</entry>
<entry><literal>1</literal> (para segunda-feira) a <literal>7</literal> (para domingo)</entry>
</row>
<row>
<entry><literal>S</literal></entry>
<entry>Sufixo ordinal inglês para o dia do mês, 2 caracteres</entry>
<entry>
<literal>st</literal>, <literal>nd</literal>, <literal>rd</literal> ou
<literal>th</literal>. Funciona bem com <literal>j</literal>
</entry>
</row>
<row>
<entry><literal>w</literal></entry>
<entry>Representação numérica do dia da semana</entry>
<entry><literal>0</literal> (para domingo) a <literal>6</literal> (para sábado)</entry>
</row>
<row>
<entry><literal>z</literal></entry>
<entry>O dia do ano (começando em 0)</entry>
<entry><literal>0</literal> a <literal>365</literal></entry>
</row>
<row>
<entry align="center"><emphasis>Semana</emphasis></entry>
<entry>---</entry>
<entry>---</entry>
</row>
<row>
<entry><literal>W</literal></entry>
<entry>Número da semana do mês ISO 8601, semanas começando na segunda-feira</entry>
<entry>Exemplo: <literal>42</literal> (a 42ª semana no ano)</entry>
</row>
<row>
<entry align="center"><emphasis>Mês</emphasis></entry>
<entry>---</entry>
<entry>---</entry>
</row>
<row>
<entry><literal>F</literal></entry>
<entry>Uma representação textual completa do mês, como January ou March</entry>
<entry><literal>January</literal> a <literal>December</literal></entry>
</row>
<row>
<entry><literal>m</literal></entry>
<entry>Representação numérica de um mês, com zeros à esquerda</entry>
<entry><literal>01</literal> a <literal>12</literal></entry>
</row>
<row>
<entry><literal>M</literal></entry>
<entry>Uma representação textual curta de um mês, três letras</entry>
<entry><literal>Jan</literal> a <literal>Dec</literal></entry>
</row>
<row>
<entry><literal>n</literal></entry>
<entry>Representação numérica de um mês, sem zeros à esquerda</entry>
<entry><literal>1</literal> a <literal>12</literal></entry>
</row>
<row>
<entry><literal>t</literal></entry>
<entry>Número de dias em determinado mês</entry>
<entry><literal>28</literal> a <literal>31</literal></entry>
</row>
<row>
<entry align="center"><emphasis>Ano</emphasis></entry>
<entry>---</entry>
<entry>---</entry>
</row>
<row>
<entry><literal>L</literal></entry>
<entry>Se é um ano bissexto</entry>
<entry><literal>1</literal> se for um ano bissexto, <literal>0</literal> caso contrário.</entry>
</row>
<row>
<entry><literal>o</literal></entry>
<entry>Ano de numeração da semana ISO 8601. Tem o mesmo valor que
<literal>Y</literal>, exceto que se o número da semana ISO
(<literal>W</literal>) pertencer ao ano anterior ou seguinte, esse ano
será usado.</entry>
<entry>Exemplos: <literal>1999</literal> ou <literal>2003</literal></entry>
</row>
<row>
<entry><literal>X</literal></entry>
<entry>Uma representação numérica completa expandida de um ano, pelo menos 4 dígitos,
com <literal>-</literal> para anos AEC, e <literal>+</literal>
para anos EC.</entry>
<entry>Exemplos: <literal>-0055</literal>, <literal>+0787</literal>,
<literal>+1999</literal>, <literal>+10191</literal></entry>
</row>
<row>
<entry><literal>x</literal></entry>
<entry>Uma representação numérica completa expandida se necessário, ou uma
representação numérica completa padrão se possível (como
<literal>Y</literal>). Pelo menos quatro dígitos. Anos AEC são prefixados
com um <literal>-</literal>. Anos além de (e incluindo)
<literal>10000</literal> são prefixados com um
<literal>+</literal>.</entry>
<entry>Exemplos: <literal>-0055</literal>, <literal>0787</literal>,
<literal>1999</literal>, <literal>+10191</literal></entry>
</row>
<row>
<entry><literal>Y</literal></entry>
<entry>Uma representação numérica completa de um ano, pelo menos 4 dígitos,
com <literal>-</literal> para anos AEC.</entry>
<entry>Exemplos: <literal>-0055</literal>, <literal>0787</literal>,
<literal>1999</literal>, <literal>2003</literal>,
<literal>10191</literal></entry>
</row>
<row>
<entry><literal>y</literal></entry>
<entry>Uma representação de dois digitos do ano</entry>
<entry>Exemplos: <literal>99</literal> ou <literal>03</literal></entry>
</row>
<row>
<entry align="center"><emphasis>Hora</emphasis></entry>
<entry>---</entry>
<entry>---</entry>
</row>
<row>
<entry><literal>a</literal></entry>
<entry>Ante meridiem e Post meridiem em letras minúsculas</entry>
<entry><literal>am</literal> ou <literal>pm</literal></entry>
</row>
<row>
<entry><literal>A</literal></entry>
<entry>Ante meridiem e Post meridiem em letras maiúsculas</entry>
<entry><literal>AM</literal> ou <literal>PM</literal></entry>
</row>
<row>
<entry><literal>B</literal></entry>
<entry>Internet Time da Swatch</entry>
<entry><literal>000</literal> a <literal>999</literal></entry>
</row>
<row>
<entry><literal>g</literal></entry>
<entry>Formato de 12 horas de uma hora sem zeros à esquerda</entry>
<entry><literal>1</literal> a <literal>12</literal></entry>
</row>
<row>
<entry><literal>G</literal></entry>
<entry>Formato de 24 horas de uma hora sem zeros à esquerda</entry>
<entry><literal>0</literal> a <literal>23</literal></entry>
</row>
<row>
<entry><literal>h</literal></entry>
<entry>Formato de 12 horas de uma hora com zeros à esquerda</entry>
<entry><literal>01</literal> a <literal>12</literal></entry>
</row>
<row>
<entry><literal>H</literal></entry>
<entry>Formato de 24 horas de uma hora com zeros à esquerda</entry>
<entry><literal>00</literal> a <literal>23</literal></entry>
</row>
<row>
<entry><literal>i</literal></entry>
<entry>Minutos com zeros à esquerda</entry>
<entry><literal>00</literal> to <literal>59</literal></entry>
</row>
<row>
<entry><literal>s</literal></entry>
<entry>Segundos com zeros à esquerda</entry>
<entry><literal>00</literal> a <literal>59</literal></entry>
</row>
<row>
<entry><literal>u</literal></entry>
<entry>
Microssegundos. Note que
<function>date</function> sempre irá gerar
<literal>000000</literal> uma vez que leva um parâmetro <type>int</type>,
enquanto <methodname>DateTimeInterface::format</methodname>
suporta microssegundos se um objeto do tipo
<interfacename>DateTimeInterface</interfacename> foi criado com microssegundos.
</entry>
<entry>Exemplo: <literal>654321</literal></entry>
</row>
<row>
<entry><literal>v</literal></entry>
<entry>
Millisegundos. A mesma nota se aplica como no
<literal>u</literal>.
</entry>
<entry>Exemplo: <literal>654</literal></entry>
</row>
<row>
<entry align="center"><emphasis>Fuso horário</emphasis></entry>
<entry>---</entry>
<entry>---</entry>
</row>
<row>
<entry><literal>e</literal></entry>
<entry>Identificador do fuso horário</entry>
<entry>Exemplos: <literal>UTC</literal>, <literal>GMT</literal>, <literal>Atlantic/Azores</literal></entry>
</row>
<row>
<entry><literal>I</literal> (i maiúsculo)</entry>
<entry>Se a data está ou não no horário de verão</entry>
<entry><literal>1</literal> se está no horário de verão, <literal>0</literal> caso contrário.</entry>
</row>
<row>
<entry><literal>O</literal></entry>
<entry>Diferença para o horário de Greenwich (GMT) sem dois pontos entre horas e minutos</entry>
<entry>Example: <literal>+0200</literal></entry>
</row>
<row>
<entry><literal>P</literal></entry>
<entry>Diferença para o horário de Greenwich (GMT) com dois pontos entre horas e minutos</entry>
<entry>Exemplo: <literal>+02:00</literal></entry>
</row>
<row>
<entry><literal>p</literal></entry>
<entry>
O mesmo que <literal>P</literal>, mas retorna <literal>Z</literal> em vez de <literal>+00:00</literal>
(disponível a partir do PHP 8.0.0)
</entry>
<entry>Exemplo: <literal>Z</literal> or <literal>+02:00</literal></entry>
</row>
<row>
<entry><literal>T</literal></entry>
<entry>Abreviação do fuso horário, se conhecido; ou o deslocamento GMT caso contrário.</entry>
<entry>Exemplos: <literal>EST</literal>, <literal>MDT</literal>, <literal>+05</literal></entry>
</row>
<row>
<entry><literal>Z</literal></entry>
<entry>Deslocamento do fuso horário em segundos. O deslocamento para fusos a oeste de UTC é sempre
negativo, e para aqueles a leste de UTC é sempre positivo.</entry>
<entry><literal>-43200</literal> a <literal>50400</literal></entry>
</row>
<row>
<entry align="center"><emphasis>Data/Horário completos</emphasis></entry>
<entry>---</entry>
<entry>---</entry>
</row>
<row>
<entry><literal>c</literal></entry>
<entry>Data ISO 8601</entry>
<entry>2004-02-12T15:19:21+00:00</entry>
</row>
<row>
<entry><literal>r</literal></entry>
<entry>Data formatada <link xlink:href="&url.rfc;2822">RFC 2822</link>/<link xlink:href="&url.rfc;5322">RFC 5322</link></entry>
<entry>Exemplo: <literal>Thu, 21 Dec 2000 16:01:07 +0200</literal></entry>
</row>
<row>
<entry><literal>U</literal></entry>
<entry>Segundos desde a Época Unix (1 de janeiro de 1970 00:00:00 GMT)</entry>
<entry>Veja também <function>time</function></entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<para>
Caracteres não reconhecidos na string de formatação serão impressos
como estão. O formato <literal>Z</literal> sempre retornará
<literal>0</literal> ao usar <function>gmdate</function>.
</para>
<note>
<para>
Uma vez que esta função só aceita timestamps <type>int</type>, o caractere de formato
<literal>u</literal> só é útil ao usar a função
<function>date_format</function> com timestamps baseados no usuário
criados com <function>date_create</function>.
</para>
</note>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Retorna a data formatada em caso de sucesso.
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.2.0</entry>
<entry>
Os caracteres de formatação <literal>X</literal> e <literal>x</literal>
foram adicionados.
</entry>
</row>
<row>
<entry>8.0.0</entry>
<entry>
O caractere de formatação <literal>p</literal> foi adicionado.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Exemplo de <function>DateTimeInterface::format</function></title>
<para>&style.oop;</para>
<programlisting role="php">
<![CDATA[
<?php
$date = new DateTimeImmutable('2000-01-01');
echo $date->format('Y-m-d H:i:s');
?>
]]>
</programlisting>
<para>&style.procedural;</para>
<programlisting role="php">
<![CDATA[
<?php
$date = date_create('2000-01-01');
echo date_format($date, 'Y-m-d H:i:s');
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
2000-01-01 00:00:00
]]>
</screen>
</example>
</para>
<para>
<example>
<title>Mais exemplos</title>
<programlisting role="php">
<![CDATA[
<?php
// define o fuso horário padrão a ser usado.
date_default_timezone_set('UTC');
// agora
$date = new DateTimeImmutable();
// Imprime algo como: Wednesday
echo $date->format('l'), "\n";
// Imprime algo como: Wednesday 19th of October 2022 08:40:48 AM
echo $date->format('l jS \o\f F Y h:i:s A'), "\n";
/* usa as constantes no parâmetro format */
// Imprime algo como: Wed, 19 Oct 2022 08:40:48 +0000
echo $date->format(DateTimeInterface::RFC2822), "\n";
?>
]]>
</programlisting>
</example>
</para>
<para>
Pode-se evitar que um caractere reconhecido na string de formação seja
expandido escapando-o com uma barra invertida antes. Se o caractere com
uma barra invertida já for uma sequência especial, pode-se escapar também
a barra invertida.
<example>
<title>Escapando caracteres ao formatar</title>
<programlisting role="php">
<![CDATA[
<?php
$date = new DateTimeImmutable();
// exibe algo como: Wednesday the 19th
echo $date->format('l \t\h\e jS');
?>
]]>
</programlisting>
</example>
</para>
<para>
Para formatar datas em outras línguas,
<methodname>IntlDateFormatter::format</methodname>
pode ser usado em vez do <methodname>DateTimeInterface::format</methodname>.
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<para>
Este método não utiliza configurações baseadas no idioma. Toda a saída será em Inglês.
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<simplelist>
<member><methodname>IntlDateFormatter::format</methodname></member>
</simplelist>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->