Есть ли в Haskell библиотека для свиданий? - PullRequest
13 голосов
/ 10 января 2010

Есть ли в Haskell функция, позволяющая мне вводить компонент даты (например, строковое представление или компоненты дня-месяца-года), из которого я могу получать информацию (например, день недели, дни в месяце и т. Д.)

Я посмотрел онлайн и похоже, что есть много пользовательских библиотек, но я надеюсь, что есть одна из стандартных библиотек прелюдии ghci 10.6.4, которая просто плохо документирована?

Ответы [ 3 ]

8 голосов
/ 10 января 2010

Достаточно ли Data.Time.Calendar и Data.Time.Format в библиотеке времени достаточно?

Вы можете проанализировать строковое представление даты и получить длину месяца, используя gregorianMonthLength. Не уверен насчет дня недели, хотя вы можете отформатировать дату в виде строки, используя формат, который просто отображает день недели.

2 голосов
/ 10 января 2010

Быстрый поиск в Google показывает это , что может быть тем, что вы хотите. Это позволяет вам анализировать строки, представляющие даты, и извлекать из них информацию.

1 голос
/ 03 октября 2017

Вы можете найти день недели с mondayStartWeek или sundayStartWeek, в зависимости от того, считаете ли вы, что неделя начинается в понедельник или в воскресенье. Обе функции находятся в Data.Time.Calendar.OrdinalDate.

λ> snd $ mondayStartWeek $ fromGregorian 2017 10 3
2

В приведенном выше примере возвращаемое значение равно 2, что указывает на второй день недели. Поскольку функция называется mondayStartWeek, понедельник является первым днем, поэтому 2 соответствует вторнику. Это относится к 3 октября 2017 года.

Предупреждение относительно номера недели

Обе функции возвращают кортеж, где вторым элементом является день недели. Насколько я могу судить, это заслуживает доверия.

Однако первым элементом является номер недели в году. Будьте осторожны с этим, потому что правила нумерации недели являются политическими. Если я правильно помню, в США неделя 1 - это неделя, в которой содержится 1 января. Это не относится к Дании, где я живу. Здесь неделя 1 - первая неделя, на которую выпадает четверг в новом году. Это может означать, что 31 декабря может выпасть на 1-й неделе следующего года. IIRC, это правило для многих других европейских стран. В некоторые годы номера американских и европейских недель совпадают, а в некоторые годы - нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...