Seja rigoroso no que você aceita. O liberal no que você aceita, e seja estrito o que você retorna, é baseado em um mundo de agentes independentes, por exemplo servidores SMTP. Se um servidor de e-mail enviar um e-mail com falha e você puder resgatá-lo, isso é melhor do que um erro criptográfico para o remetente do e-mail.
No entanto, quando você está projetando uma API para ser consumida por outros programadores, é uma história diferente. Eles obtêm feedback imediato quando fornecem entrada errada. A outra opção de adivinhar o que eles significam é muito perigosa. Se você aceitar 14-12 em 14 de dezembro e 14 a 10 em 14 de outubro, o que seu programa fará com 10-12? Melhor ser rigoroso, e erro com um deles, assim, seu programa se comportará de maneira previsível, o que é muito mais importante do que ser capaz de aceitar tudo.