Дата и время
module Time ( ClockTime, Month(January,February,March,April,May,June, July,August,September,October,November,December), Day(Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday), CalendarTime(CalendarTime, ctYear, ctMonth, ctDay, ctHour, ctMin, ctSec, ctPicosec, ctWDay, ctYDay, ctTZName, ctTZ, ctIsDST), TimeDiff(TimeDiff, tdYear, tdMonth, tdDay, tdHour, tdMin, tdSec, tdPicosec), getClockTime, addToClockTime, diffClockTimes, toCalendarTime, toUTCTime, toClockTime, calendarTimeToString, formatCalendarTime ) where import Ix(Ix) data ClockTime = ... - Зависит от реализации instance Ord ClockTime where ... instance Eq ClockTime where ... data Month = January | February | March | April | May | June | July | August | September | October | November | December deriving (Eq, Ord, Enum, Bounded, Ix, Read, Show) data Day = Sunday | Monday | Tuesday | Wednesday | Thursday | Friday | Saturday deriving (Eq, Ord, Enum, Bounded, Ix, Read, Show) data CalendarTime = CalendarTime { ctYear :: Int, ctMonth :: Month, ctDay, ctHour, ctMin, ctSec :: Int, ctPicosec :: Integer, ctWDay :: Day, ctYDay :: Int, ctTZName :: String, ctTZ :: Int, ctIsDST :: Bool } deriving (Eq, Ord, Read, Show) data TimeDiff = TimeDiff { tdYear, tdMonth, tdDay, tdHour, tdMin, tdSec :: Int, tdPicosec :: Integer } deriving (Eq, Ord, Read, Show) - Функции со временем getClockTime :: IO ClockTime addToClockTime :: TimeDiff -> ClockTime -> ClockTime diffClockTimes :: ClockTime -> ClockTime -> TimeDiff toCalendarTime :: ClockTime -> IO CalendarTime toUTCTime :: ClockTime -> CalendarTime toClockTime :: CalendarTime -> ClockTime calendarTimeToString :: CalendarTime -> String formatCalendarTime :: TimeLocale -> String -> CalendarTime -> String
Библиотека Time обеспечивает стандартные функциональные возможности работы со временем системных часов, включая информацию о часовых поясах. Она соответствует RFC 1129 в его использовании всеобщего скоординированного времени (UTC -- Coordinated Universal Time).
ClockTime является абстрактным типом, который используется для системных внутренних часов (системного внутреннего генератора тактовых импульсов). Такты системных часов можно сравнивать непосредственно или после преобразования их в календарное время CalendarTime для ввода - вывода или других манипуляций. CalendarTime является удобным для использования и манипулирования представлением внутреннего типа ClockTime. Числовые поля имеют следующие диапазоны:
Поле ctTZName -- это название часового пояса. Значение поля ctIsDST равно True, если имеет место летнее время, и False иначе. Тип TimeDiff регистрирует различия между двумя тактами системных часов в удобной для использования форме.
Функция getClockTime возвращает текущее время в его внутреннем представлении. Выражение addToClockTime d t складывает разницу во времени d и время системных часов t, чтобы получить новое время системных часов. Разница d может быть положительной или отрицательной. Выражение diffClockTimes t1 t2 возвращает разницу между двумя значениями системных часов t1 и t2, как и TimeDiff.
Функция toCalendarTime t преобразовывает t в местное время в соответствии с часовым поясом и установками летнего времени. Из-за этой зависимости от местной среды toCalendarTime находится в монаде IO.
Функция toUTCTime t преобразовывает t в CalendarTime в стандартном формате UTC. toClockTime l преобразовывает l в соответствующее внутреннее значение ClockTime, игнорируя содержимое полей ctWDay, ctYDay, ctTZName и ctIsDST.
Функция calendarTimeToString форматирует значения календарного времени, используя национальные особенности и строку форматирования.