# Échéances et chronomètre

Source : https://docs.berkios.online/galerie/echeances-et-chronometre/ · Section : Galerie · Documentation officielle BERKIOS (https://docs.berkios.online)


Des dates relatives, des jours restants et un chronomètre, avec les bibliothèques `datetime` et `systeme`.

Télécharger l'exemple : https://github.com/berkiosbuinu-server/examples/releases/latest/download/10-echeances-et-chronometre.zip

**Type :** BERKIOS Studio + modules · **Niveau :** intermédiaire · **Fichier :** `02-echeances-datetime.berkios.json`

## Ce que vous allez apprendre

- Utiliser des **bibliothèques** de commandes dans un projet.
- Écrire de petits scripts BERKIOS CODE sur des boutons.
- Calculer des dates et mesurer un temps.

## Avant de commencer

[Installer le Studio](https://docs.berkios.online/commencer/telecharger/), puis lire la [vue d'ensemble des modules](https://docs.berkios.online/modules/apercu/).

## Étape 1 : importer l'exemple

**Fichier → Importer**, puis choisissez `02-echeances-datetime.berkios.json`. Les bibliothèques `datetime` et `systeme` sont **déjà embarquées dans le projet** : rien à installer.

## Étape 2 : l'écran

L'interface « Échéances » contient :

| Composant | Rôle |
|---|---|
| `maintenant`, `jour` | Date et heure actuelles, jour de la semaine |
| `echeance` | La date d'échéance |
| `reste`, `etat` | Jours restants, et « l'échéance est-elle passée ? » |
| `resume` | Un résumé prêt à copier |
| `duree` | Le temps lu sur le chronomètre |
| Boutons `actualiser`, `trente`, `calculer`, `copier`, `demarrer`, `lire` | Les actions |

## Étape 3 : tester dans l'aperçu

1. Au chargement, la date et l'heure s'affichent, ainsi qu'une échéance à 30 jours.
2. **Actualiser l'heure** met à jour la date et le jour.
3. **Dans 30 jours** place l'échéance à aujourd'hui + 30 jours.
4. **Calculer** affiche les jours restants et indique si la date est passée.
5. **Copier le résumé** met dans le presse-papiers : « Échéance le … — … jour(s) ».
6. **Démarrer le chrono**, attendez quelques secondes, puis **Lire le chrono** : la durée s'affiche.

## Les scripts expliqués

Au chargement de l'application, sur le titre :

```text
quand chargement
  date-et-heure "maintenant"
  jour-actuel "jour"
  dans-jours "echeance" 30
```

`quand chargement` s'exécute à l'ouverture. Chaque ligne appelle une commande de la bibliothèque `datetime` et écrit son résultat dans le composant nommé entre guillemets.

Sur le bouton **Calculer** :

```text
quand clic
  obligatoire "echeance"
  jours-restants "echeance" "reste"
  est-passee "echeance" "etat"
  message "Calcul effectué."
```

- `obligatoire "echeance"` arrête le script si l'échéance est vide.
- `jours-restants` écrit dans `reste` le nombre de jours avant la date.
- `est-passee` écrit dans `etat` si la date est déjà passée.
- `message` affiche une confirmation.

Sur le bouton **Copier le résumé** :

```text
quand clic
  obligatoire "reste"
  copier "echeance" "$dcourte"
  date-courte "$dcourte"
  concatener "resume" "Échéance le " "$dcourte" " — " "reste" " jour(s)"
  copier-valeur "resume"
```

- `$dcourte` est une **variable temporaire** (le signe `$`).
- `date-courte` transforme `2026-12-25` en `25/12/2026`.
- `concatener` assemble le texte du résumé.
- `copier-valeur` (bibliothèque `systeme`) envoie le résumé dans le presse-papiers.

Sur les boutons du chronomètre :

```text
quand clic
  chrono-demarrer "chrono-exemple"
  message "Chronomètre démarré."
```

```text
quand clic
  chrono-lire "chrono-exemple" "$secondes"
  formater-duree "$secondes" "duree"
```

Le chronomètre est **mémorisé** : après « Démarrer », vous pouvez fermer puis rouvrir l'application générée avant de « Lire ».

## Les bibliothèques utilisées

| Bibliothèque | Commandes de cet exemple | Permission |
|---|---|---|
| [`datetime`](https://docs.berkios.online/modules/datetime/) | `date-et-heure`, `jour-actuel`, `dans-jours`, `jours-restants`, `est-passee`, `date-courte`, `chrono-demarrer`, `chrono-lire`, `formater-duree` | `stockage` (chronomètre) |
| `systeme` | `copier-valeur` | `presse-papiers`, `fichiers`, `stockage` |

Le Studio affiche ces permissions avant d'ajouter une bibliothèque à un projet.

## À vous de jouer

Ajoutez un bouton **Dans 7 jours** dont le script est :

```text
quand clic
  dans-jours "echeance" 7
```

Puis un bouton **Dans 3 mois** avec la commande `dans-mois "echeance" 3`.

## Pour aller plus loin

- Toutes les commandes : [Bibliothèque datetime](https://docs.berkios.online/modules/datetime/)
- Autres modules : [Vue d'ensemble](https://docs.berkios.online/modules/apercu/)
- Vous avez terminé les 10 premiers exemples. Retour à la [Galerie](https://docs.berkios.online/galerie/)
