> For the complete documentation index, see [llms.txt](https://docs.opencityitalia.it/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.opencityitalia.it/stanza-del-cittadino/guida-alla-creazione-dei-servizi-digitali/creare-un-servizio/i-componenti/le-date.md).

# Le date

Per inserire un campo che preveda l'inserimento di una data durante la compilazione della pratica, trascina dall'elenco il componente "[Textfield](/stanza-del-cittadino/guida-alla-creazione-dei-servizi-digitali/creare-un-servizio/i-componenti/il-textfield.md)".

<figure><img src="/files/490Pt1gh9luogHyHB8wG" alt=""><figcaption></figcaption></figure>

## Configurare le date

Nella sezione "Display" del componente, imposta la voce **"Input Mask"** con il valore `99/99/9999` e come placeholder `gg/mm/aaaa` .

Nella sezione "Validation" del componente, apri la voce "Custom validation" e inserisci il codice JavaScript appropriato in base al caso d'uso.

<details>

<summary>Data nel passato</summary>

Controlla che la data inserita sia valida e non sia nel futuro (utile ad esempio per date di nascita o eventi già avvenuti).

```javascript
date = moment(input, 'DD/MM/YYYY');
if (!date.isValid()){
  valid = "La data inserita non è valida";
}
if (date.isAfter(moment())){
  valid = "La data inserita deve essere nel passato";
}
```

<figure><img src="/files/M6C89piJ6lVyELC9lJBB" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Data nel futuro</summary>

Controlla che la data inserita sia valida e non sia nel passato (utile ad esempio per date di appuntamento o eventi futuri).

<pre class="language-javascript"><code class="lang-javascript"><strong>date = moment(input, 'DD/MM/YYYY');
</strong>if (!date.isValid()){
  valid = "La data inserita non è valida";
}
if (date.isBefore(moment())){
  valid = "La data inserita deve essere nel fututo";
}
</code></pre>

<figure><img src="/files/GcREj0stXrJPa5OaHqAD" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Confronto tra due date</summary>

Controlla che la seconda data (ad esempio la data di fine) sia uguale o successiva alla prima (ad esempio la data di inizio). Sostituisci `initial_date` con la chiave API del campo data di inizio.

{% code expandable="true" %}

```javascript
passedDate = moment(input, 'DD/MM/YYYY');
initialDate = moment(data.initial_date, 'DD/MM/YYYY');
if (!passedDate.isValid()) {
  valid = "La data inserita non è valida";
} else if (!initialDate.isValid()) {
  valid = "Inserisci prima la data di inizio";
} else if (passedDate.isBefore(initialDate, 'day')) {
  valid = "La data inserita non può precedere la data di inizio";
} else {
  valid = true;
}
```

{% endcode %}

<figure><img src="/files/Vv3rcRZ2qRl9qXBo9ndC" alt=""><figcaption></figcaption></figure>

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.opencityitalia.it/stanza-del-cittadino/guida-alla-creazione-dei-servizi-digitali/creare-un-servizio/i-componenti/le-date.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
