Как проанализировать относительное время?

Это решение, отличное от CSS: если изображения hover находятся в одном каталоге и имеют общее соглашение об именах, например, содержат подстроку «-on.», можно выбрать имена файлов и поместить их в HTML как серия:

<img src='...' style='display: none' />
12
задан Chris Stryczynski 22 April 2019 в 16:00
поделиться

5 ответов

Это создает DSL (Предметно-ориентированный язык) для обработки даты. Я не знаю, сделал ли кто-то один для.NET, но конструкция DSL довольно проста:

  1. Определите язык точно, которые вводят формы, которые Вы примете и что Вы сделаете с неоднозначностями
  2. Создайте грамматику для языка
  3. Создайте конечный автомат, который анализирует Ваш язык в действенный AST

Можно сделать все это собой (с помощью Книги Дракона, например) или с помощью инструментов к эффекту, как показано в этой ссылке.

Только путем размышления трудно о возможностях у Вас есть хороший шанс, с помощью хороших примеров UI, покрытия больше чем половины фактических исходных данных, которые получит Ваше приложение. Если Вы стремитесь принимать все, что человек мог бы возможно ввести, можно записать вход, определенный как неоднозначный, и затем добавить их к грамматике, каждый раз, когда они могут быть интерпретированы, поскольку существуют вещи, которые будут по сути неоднозначны.

3
ответ дан 2 December 2019 в 22:39
поделиться

Это вероятно не все, что полезный, так как Вы говорите c#, но начиная ни с чьего упомянутого это все же, можно попытаться смотреть на превосходную и совершенно безумную собственную функцию strtotime php

0
ответ дан 2 December 2019 в 22:39
поделиться

Поиск 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#, Вы могли бы записать что-то на основе алгоритмов, которые они используют...

Это также идет с целым набором модульных тестов.

7
ответ дан 2 December 2019 в 22:39
поделиться

Рубиновые люди попытались заняться этим с синтаксическим анализатором под названием Хронический.

Я недавно смотрел информативную видеопрезентацию о том, как автор пошел о решении этой проблемы.

0
ответ дан 2 December 2019 в 22:39
поделиться

Это: http://www.codeproject.com/KB/edit/dateparser.aspx справедливо близко к тому, что Вы пытаетесь выполнить. Не самое изящное решение, но конечно мог бы сохранить Вас некоторая работа.

-1
ответ дан 2 December 2019 в 22:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: