Когда-то я взломал трещину, я играл с парсерами, потому что ничего о них не знал, так что не ожидайте качества. Но вы можете получить код здесь: http://timestamper.codeplex.com/
Я некоторое время не смотрел на это, но я уверен, что он может делать все, что вы упомянули выше.
Edit:
Только что заметил, что вы хотите, чтобы возвращался объект timepan, а не дата. Код, который я предоставил, вернет сегодня релевантный DateTime, т.е.
«2 дня» будет: DateTime.Now.AddDays (2);
По крайней мере, я думаю, что это то, что сделал, вполне могу быть уверен. Если дело обстоит именно так, вы просто сможете получить промежуток времени между двумя датами времени.