code: public function createService(ServiceLocatorInterface $serviceLocator)
      {
          $validatorChain = new ValidatorChain();
  
          $intl = new IntlDateFormatter(
              Locale::getDefault(),
              IntlDateFormatter::LONG,
              IntlDateFormatter::NONE
          );
  
          $date = (new DateTime('now'))->modify('-100 years');
          $validatorChain->attachByName('GreaterThan', [
              'messages' => [
                  GreaterThan::NOT_GREATER_INCLUSIVE => 'The date of birth '
                      . 'must be not earlier than %min% inclusive',
              ],
              'messageVariables' => [
                  'min' => ['abstractOptions' => 'fmt'],
              ],
              'min' => $date->format('Y-m-d'),
              'fmt' => $intl->format($date),
              'inclusive' => true,
          ], true);
  
          $date = (new DateTime('now'))->modify('-18 years');
          $validatorChain->attachByName('LessThan', [
              'messages' => [
                  LessThan::NOT_LESS_INCLUSIVE => 'The date of birth '
                      . 'must be not later than %max% inclusive',
              ],
              'messageVariables' => [
                  'max' => ['abstractOptions' => 'fmt'],
              ],
              'max' => $date->format('Y-m-d'),
              'fmt' => $intl->format($date),
              'inclusive' => true,
          ], true);
  
          return $validatorChain;
      }
docs: {@inheritDoc}
  
  @return ValidatorInterface