---
title: "Errors and Translations"
description: "The exceptions of Derafu Date and how to translate their messages"
type: "docs"
category: "doc"
tags: []
authors: [Anonymous]
date: "2026-11-05"
last_update: "2026-11-05"
time_minutes: 2
draft: false
unlisted: false
url: "https://www.derafu.dev/docs/core/date/errors"
---

# Errors and Translations

Every error of the package is a `Derafu\Date\Exception\DateException`, which extends `TranslatableInvalidArgumentException` of [`derafu/translation`](https://www.derafu.dev/docs/core/translation). Catching `DateException`, or PHP's `InvalidArgumentException`, catches all of them.

| Exception | When |
| --- | --- |
| `InvalidDateException` | A text is not a date, a date is not valid in its format, a time unit does not exist, or a number of the working day is less than 1. |
| `InvalidMonthException` | A month, a text `AAAA-MM` or a number `AAAAMM` is not a month, or a move leaves the years 1 to 9999. |
| `InvalidPeriodException` | The end of a period is before its start, a quarter or a semester does not exist, a number of units is less than 1, or a period must be in a single year and it is not. |

The last two extend `DateException`, like the first one.

```php
try {
    Month::fromInt(202513);
} catch (InvalidMonthException $e) {
    $e->getMessage();   // Invalid month period: 202513.
}
```

## Translations

The messages of the exceptions (domain `errors`) and the names and phrases of the dates (domain `date`) are translatable, and the Spanish translations ship with the package. To have them in your translator, import its services (or add `DateTranslationResourceProvider` to the resource providers of the translator):

```yaml
imports:
    - { resource: '../vendor/derafu/date/resources/config/date-services.yaml' }
```

The same file registers `DateFormatterInterface` and a `SystemClock` for `Psr\Clock\ClockInterface`.

With the translator, the message of the example above is `El período 202513 no es un mes, debe escribirse AAAAMM.`



---
Last updated on 05/11/2026

