Дата и время
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 форматирует значения календарного времени, используя национальные особенности и строку форматирования.