> ## 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.

# TDateTime

> O `TDateTime` é um componente de seleção de data e hora. Ele estende a classe `TEntry`.

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

## \_\_construct

Construtor da classe `TDateTime`.

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

**Exemplo de código:**

```php theme={null}
$dataHora = new TDateTime('dataHora');
```

<br />

## setValue

Armazena o valor no objeto.

**Parâmetros:**
<ResponseField name="$value" type="mixed" required>Valor da data e hora.</ResponseField>

**Exemplo de código:**

```php theme={null}
$dataHora = new TDateTime('dataHora');
$dataHora->setValue('2021-01-01 00:00');
```

<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}
$dataHora = new TDateTime('dataHora');
$dataHora->setMask('dd/mm/yyyy hh:ii');
```

<br />

## setDatabaseMask

Define a máscara do banco de dados.

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

**Exemplo de código:**

```php theme={null}
$dataHora = new TDateTime('dataHora');
$dataHora->setDatabaseMask('yyyy/mm/dd hh:ii:ss');
```

*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 />

## setOption

Define opções adicionais do datepicker.

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

**Exemplo de código:**

```php theme={null}
$dataHora = new TDateTime('dataHora');
$dataHora->setOption('todayHighlight', false);
```

<br />

## setExitAction

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

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

**Exemplo de código:**

```php theme={null}
$dataHora = new TAction('dataHora');
$dataHora->setExitAction(['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 altera o campo.

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

**Exemplo de código:**

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

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 onDateTimeChange($param = null)
{
    new TMessage('info', 'Data e hora foram alteradas com sucesso!');
}
```

<br />

## setChangeFunction

Define uma 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}
$dataHora = new TDateTime('dataHora');
$dataHora->setChangeFunction('alert("Data e/ou hora alterada.");');
```

<br />

## getPostData

Retorna os dados postados (transformará valores de acordo com a máscara do banco de dados).

**Exemplo de código:**

```php theme={null}
$dataHora = new TDateTime('dataHora');
$dadosPostados = $dataHora->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}
$dataHora = new TDateTime('dataHoraNascimento');
$dataHora->setMask('dd/mm/yyyy hh:ii');
$dataHora->setValue('03/10/2025 15:30');

$dataHoraUs = TDateTime::convertToMask($dataHora->getValue(), $dataHora->getMask(), 'yyyy-mm-dd hh:ii');
echo $dataHoraUs; // 2025-10-03 15:30
```

<br />

## enableField e disableField

(Método estático) Habilita ou desabilita um campo de data e hora 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 formulário.</ResponseField>

**Exemplo de código:**

```php theme={null}
$dataHora = new TDateTime('dataHora');
$dataHora->setValue(date('d/m/Y h:i'));

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

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

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)
{
    TDateTime::enableField('nomeForm', 'dataHora');
}

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