> ## Documentation Index
> Fetch the complete documentation index at: https://docs-fw.madbuilder.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# TDate

> O `TDate` é um componente para seleção de datas, oferecendo funcionalidades como máscaras de data e ação ao alterar a data.

Derivado da classe `TEntry`, métodos herdados não sobrescritos podem também ser utililzados por objetos `TDate`. Acesse a [documentação do componente/classe-pai](https://madbuilder.mintlify.app/entrada-de-dados/tentry) para conhecê-los.

## \_\_construct

Construtor da classe `TDate`.

**Parâmetros:**
<ResponseField name="$name" type="mixed" required>Nome do widget.</ResponseField>

**Exemplo de código:**

```php theme={null}
$dataNascimento = new TDate('dataNascimento');
```

<br />

## setValue

Armazena o valor dentro do objeto.

**Parâmetros:**
<ResponseField name="$value" type="mixed" required>Valor a ser definido.</ResponseField>

**Exemplo de código:**

```php theme={null}
$dataNascimento = new TDate('dataNascimento');
$dataNascimento->setValue('2023-05-10');
```

<br />

## setMask

Define a máscara do campo.

**Parâmetros:**
<ResponseField name="$mask" type="mixed" required>Máscara para os dados de entrada.</ResponseField>
<ResponseField name="$replaceOnPost" type="bool" default="false">(Opcional) Booleano indicando se a máscara deve ser substituída após o envio do formulário.</ResponseField>

**Exemplo de código:**

```php theme={null}
$dataNascimento = new TDate('dataNascimento');
$dataNascimento->setMask('dd/mm/yyyy');
```

<br />

## getMask

Retorna a máscara atual do campo.

**Exemplo de código:**

```php theme={null}
$dataNascimento = new TDate('dataNascimento');
$dataNascimento->setMask('mm/dd/yyyy');
$mask = $dataNascimento->getMask(); // mm/dd/yyyy
```

<br />

## setDatabaseMask

Define a máscara do banco de dados para coleta dos dados.

**Parâmetros:**
<ResponseField name="$mask" type="mixed" required>Máscara para os dados.</ResponseField>

**Exemplo de código:**

```php theme={null}
$dataNascimento = new TDate('dataNascimento');
$dataNascimento->setDatabaseMask('mm/dd/yyyy');
```

*Obs.: perceba que, ao executar o código acima, a máscara presente em nível de aplicação não terá sido alterada.*

<br />

## getDatabaseMask

Retorna a máscara do banco de dados.

**Exemplo de código:**

```php theme={null}
$dataNascimento = new TDate('dataNascimento');
$dataNascimento->setDatabaseMask('yyyy-mm-dd');
$dbMask = $dataNascimento->getDatabaseMask(); // yyyy-mm-dd
```

<br />

## setOption

Define opções extras do datepicker.

**Parâmetros:**
<ResponseField name="$option" type="mixed" required>Opção a ser definida.</ResponseField>
<ResponseField name="$value" type="mixed" required>Valor da opção.</ResponseField>

**Exemplo de código:**

```php theme={null}
$dataNascimento = new TDate('dataNascimento');
$dataNascimento->setOption('calendarWeeks', true);
```

<br />

## setExitAction

Define a ação a ser executada quando o usuário altera o valor do campo.

**Parâmetros:**
<ResponseField name="$action" type="TAction" required>Objeto `TAction`.</ResponseField>

**Exemplo de código:**

```php theme={null}
$dataEvento = new TDate('dataEvento');
$dataEvento->setExitAction(new TAction(['NomeClasseDeControle', 'onExitCampo']));
```

Código de exemplo da função a ser chamada, lembrando que essa função precisa ser estática (static function).

```php theme={null}
public static function onExitCampo($param = null)
{
    new TMessage('info', print_r($param, true));
}
```

<br />

## setChangeAction

Define a ação a ser executada quando o usuário alterar o campo.

**Parâmetros:**
<ResponseField name="$action" type="TAction" required>Objeto `TAction`.</ResponseField>

**Exemplo de código:**

```php theme={null}
$dataNascimento = new TDate('dataNascimento');
$dataNascimento->setChangeAction(new TAction(['NomeClasseDeControle', 'onDateChange']));
```

Código de exemplo da função a ser chamada, lembrando que essa função precisa ser estática (static function).

```php theme={null}
public static function onDateChange($param = null)
{
    new TMessage('info', 'A data foi alterada com sucesso!');
}
```

<br />

## setChangeFunction

Define a função JavaScript a ser executada quando o usuário alterar o campo.

**Parâmetros:**
<ResponseField name="$function" type="mixed" required>Função JavaScript.</ResponseField>

**Exemplo de código:**

```php theme={null}
$dataNascimento = new TDate('dataNascimento');
$dataNascimento->setChangeFunction('alert("Data alterada.");');
```

<br />

## getPostData

Retorna o dado enviado pelo formulário (transformará valores de acordo com a máscara do banco de dados).

**Exemplo de código:**

```php theme={null}
$dataNascimento = new TDate('dataNascimento');
$dataNascimento->setMask('mm/dd/yyyy');

$dadosPostados = $dataNascimento->getPostData();
```

<br />

## convertToMask

(Método estático) Converte uma data de uma máscara para outra.

**Parâmetros:**
<ResponseField name="$value" type="mixed" required>Data original.</ResponseField>
<ResponseField name="$fromMask" type="mixed" required>Máscara de origem.</ResponseField>
<ResponseField name="$toMask" type="mixed" required>Máscara de destino.</ResponseField>

**Exemplo de código:**

```php theme={null}
$data = new TDate('dataNascimento');
$data->setMask('dd/mm/yyyy');
$data->setValue('03/10/2025');

$dataUs = TDate::convertToMask($data->getValue(), $data->getMask(), 'yyyy-mm-dd');
echo $dataUs; // 2025-10-03
```

<br />

## date2us

(Método estático) Converte uma data do formato `dd/mm/yyyy` para `yyyy-mm-dd`.

**Parâmetros:**
<ResponseField name="$date" type="mixed" required>Data em formato `dd/mm/yyyy`.</ResponseField>

**Exemplo de código:**

```php theme={null}
echo TDate::date2us('20/05/2023'); // 2023-05-20
```

<br />

## date2br

(Método estático) Converte uma data do formato `yyyy-mm-dd` para `dd/mm/yyyy`.

**Parâmetros:**
<ResponseField name="$date" type="mixed" required>Data em formato `yyyy-mm-dd`.</ResponseField>

**Exemplo de código:**

```php theme={null}
echo TDate::date2br('2023-05-20'); // 20/05/2023
```

<br />

## enableField e disableField

(Método estático) Habilita ou desabilita um campo de data no formulário.

**Parâmetros:**
<ResponseField name="$form_name" type="mixed" required>Nome do formulário.</ResponseField>
<ResponseField name="$field" type="mixed" required>Nome do campo.</ResponseField>

**Exemplo de código:**

```php theme={null}
$data = new TDate('data');
$data->setValue(date('d/m/Y'));

$btnHabilitar = new TButton('btnEnableField');
$btnHabilitar->addStyleClass('btn-default');
$btnHabilitar->setImage('far:circle #000000');
$btnHabilitar->setAction(new TAction([$this, 'habilitarCampo']), 'Habilitar Campo de Data');

$btnDesabilitar = new TButton('btnDisableField');
$btnDesabilitar->addStyleClass('btn-default');
$btnDesabilitar->setImage('far:circle #000000');
$btnDesabilitar->setAction(new TAction([$this, 'desabilitarCampo']), 'Desabilitar Campo de Data');
```

Código de exemplo das funções a serem chamadas, lembrando que essas funções precisam ser estáticas (static function).

```php theme={null}
public static function habilitarCampo($param = null)
{
    TDate::enableField('nomeForm', 'data');
}

public static function desabilitarCampo($param = null)
{
    TDate::disableField('nomeForm', 'data');
}
```
