Это решение, отличное от CSS: если изображения hover находятся в одном каталоге и имеют общее соглашение об именах, например, содержат подстроку «-on.», можно выбрать имена файлов и поместить их в HTML как серия:
<img src='...' style='display: none' />
Это создает DSL (Предметно-ориентированный язык) для обработки даты. Я не знаю, сделал ли кто-то один для.NET, но конструкция DSL довольно проста:
Можно сделать все это собой (с помощью Книги Дракона, например) или с помощью инструментов к эффекту, как показано в этой ссылке.
Только путем размышления трудно о возможностях у Вас есть хороший шанс, с помощью хороших примеров UI, покрытия больше чем половины фактических исходных данных, которые получит Ваше приложение. Если Вы стремитесь принимать все, что человек мог бы возможно ввести, можно записать вход, определенный как неоднозначный, и затем добавить их к грамматике, каждый раз, когда они могут быть интерпретированы, поскольку существуют вещи, которые будут по сути неоднозначны.
Это вероятно не все, что полезный, так как Вы говорите c#, но начиная ни с чьего упомянутого это все же, можно попытаться смотреть на превосходную и совершенно безумную собственную функцию strtotime php
Поиск Google поднимает parsedatetime библиотеку (связанный с проектом Chandler), который разработан, чтобы сделать точно это. Это с открытым исходным кодом (лицензия Apache) и записанный в Python. Это, кажется, довольно сложно - от домашней страницы:
parsedatetime может проанализировать, например, следующее:
* Aug 25 5pm * 5pm August 25 * next saturday ... * tomorrow * next thursday at 4pm * at 4pm * eod * in 5 minutes * 5 minutes from now * 5 hours before now * 2 days from tomorrow
Так как это реализовано в чистом Python и не использует ничего необычного, существует хороший шанс, это совместимо с IronPython, таким образом, Вы могли использовать его с .NET. Если Вы хотите конкретно решение C#, Вы могли бы записать что-то на основе алгоритмов, которые они используют...
Это также идет с целым набором модульных тестов.
Рубиновые люди попытались заняться этим с синтаксическим анализатором под названием Хронический.
Я недавно смотрел информативную видеопрезентацию о том, как автор пошел о решении этой проблемы.
Это: http://www.codeproject.com/KB/edit/dateparser.aspx справедливо близко к тому, что Вы пытаетесь выполнить. Не самое изящное решение, но конечно мог бы сохранить Вас некоторая работа.