Это создание DSL (предметно-ориентированного языка) для обработки дат. Я не знаю, если кто-то сделал это для .NET, но создание DSL довольно просто:
- Определите язык точно, какие формы ввода вы будете принимать и что вы будете делать с неясностями
- Построить грамматику для языка
- Создайте конечный автомат, который разберет ваш язык в действующий AST
Вы можете сделать все это самостоятельно (например, с помощью Книга Дракона ) или с помощью соответствующих инструментов, как показано в этой ссылке .
Просто подумав о возможностях, у вас есть хороший шанс, с помощью хороших примеров пользовательского интерфейса, охватить более половины фактических входных данных, которые получит ваше приложение. Если вы стремитесь принять все, что мог бы набрать человек, вы можете записать входные данные, определенные как неоднозначные, а затем добавить их к грамматике, когда бы они ни были интерпретированы, поскольку есть вещи, которые по своей сути будут неоднозначными.