C # Библиотека для анализа удобочитаемых промежутков времени - PullRequest
13 голосов
/ 20 августа 2009

Существует ли библиотека, которая будет анализировать читаемые человеком временные области в .net TimeSpan?

Мне нужно что-то, что будет анализировать строки, такие как

30 days
1 week
5 hours

Существует ли такая вещь? Наверное, не так уж сложно написать самому, но если что-то есть, это будет намного проще!

Мне не нужны такие функции, как «30 дней, 3 часа, 5 минут», только одно значение, но это не повредит!

Ответы [ 6 ]

4 голосов
/ 20 августа 2009

Когда-то я взломал трещину, я играл с парсерами, потому что ничего о них не знал, так что не ожидайте качества. Но вы можете получить код здесь: http://timestamper.codeplex.com/

Я некоторое время не смотрел на это, но я уверен, что он может делать все, что вы упомянули выше.

Edit:

Только что заметил, что вы хотите, чтобы возвращался объект timepan, а не дата. Код, который я предоставил, вернет сегодня релевантный DateTime, т.е.

«2 дня» будет: DateTime.Now.AddDays (2);

По крайней мере, я думаю, что это то, что сделал, вполне могу быть уверен. Если дело обстоит именно так, вы просто сможете получить промежуток времени между двумя датами времени.

0 голосов
/ 03 августа 2018

Я работаю над библиотекой на платформе Dotnet (и ядре dotnet), в основном на основе метки времени.

Установка из Nuget: HumanDateParser

Использование: (возвращает System.DateTime)

DateParser.Parse("1 month ago")
DateParser.Parse("after 15 days")
DateParser.Parse("15th feb 2010 at 5:30pm")
0 голосов
/ 20 августа 2009

Это не применимо напрямую, но моя компания разработала .NET библиотеку , которая делает это для дат. Партнер, который работает для промежутков (более или менее точно, что вы запрашиваете), запланирован на «когда мы будем нуждаться в этом». Если есть достаточно интереса, это может стать раньше.

0 голосов
/ 20 августа 2009

Я знаю, что вы искали библиотеку для этого, но похоже, что люди, которым нравится этот синтаксис, являются разработчиками ruby, и они хорошо придерживаются Ruby. Если вы действительно хотите это сделать, довольно просто сделать что-то похожее на .Net Extensions, что немного более читабельно. Посмотрите эту статью http://haacked.com/archive/2007/05/24/ruby-like-syntax-in-c-3.0.aspx

Также, если вам не нравится синтаксис в статье, тогда все, что вам нужно сделать, - это создать парсер, который преобразуется в тики, который может использоваться классом конструктора timespan.

0 голосов
/ 20 августа 2009

это доступные способы анализа даты и времени:

Разбор строк даты и времени

0 голосов
/ 20 августа 2009

Хорошо, я знаю, что datejs код javascript действительно хорошо работает для таких дат. Вы можете посмотреть на это для вдохновения для кода C #. Не уверен, что это очень помогает; но может быть интересно.

См. Www.datejs.com

...