Не вижу: * Итервалов дат. Арифметики над интервалами дат: сравнение/пересечение/дополнение; * Частичных дат (хотя что-то похожее я, кажется, увидел), и типа данных "поле даты" со значением "день/час/минута/секунда"; * Аналога йодовского "периода", как-то "2 дня 3 часа" (это не всегда 51 час).
Может быть, это всё делается средствами другой части стандартной библиотеки Хаскелля - буду рад просветиться.
Но вообще, я был излишне резок. Мне показалось, что в time нет операции "следующий вторник после 16го числа" или разных типов для даты с таймзоной и без. Присмотрелся - увидел.
>Арифметики над интервалами дат: сравнение/пересечение/дополнение;
Возможно сделать через пары дат. Не спорю, что этого нет, но это тривиально.
http://www.haskell.org/ghc/docs/6.10.4/html/libraries/time/Data-Time-LocalTime.html содержит "поля данных": см TimeOfDay и LocalTime. LocalTime содержит Day, который может быть спроецирован в год, месяц и день.
Follow the types!
Насчёт периода не знаю. Наверняка это тоже можно сделать и это опять же будет тривиально.
Да, интервалы, наверное, даже можно соорудить из time и intervals.
> Data-Time-LocalTime содержит "поля данных": см TimeOfDay и LocalTime. LocalTime содержит Day, который может быть спроецирован в год, месяц и день.
Это не то. В Йоде я могу соорудить период "3 часа", состоящий отдельно из переменных "количество=3" и "единица измерения=час". Хотя полезность этой фичи и маргинальна.
> Насчёт периода не знаю. Наверняка это тоже можно сделать и это опять же будет тривиально.
А вот тут не верю. Не вижу, чтобы time-овские абстракции подходили для выражения такого понятия. И операции прибавления периода "add :: LocalTime -> TimeOfDay -> LocalTime" или "add :: LocalTime -> Day -> LocalTime" я не вижу, всюду прибавляются только Int-ы. Это, пожалуй, моя единственная существенная претензия к time. Прибавлять именно Period приходится довольно часто. При построении графиков, например, надо идти в цикле с шагом в Period, и алгоритм должен работать для Period-а размерности Day и размерности Pico - а в time это разные типы.
хм, а как выразить и работать одновременно в зонах CST-6CDT, Europe/Kiev, America/Los_Angeles? как они все ведут себя на весенне/осенних сдвигах? а две последние на исторических сдвигах?
вітя, мінус joda - власна dbtz. ми не використовуємо joda-time dbtz, адаптуємо jre dbtz + parser POSIX TZ, аби коли закони міняються сис міняв конфу енва, а не викладати "новий випуск".
проглянь визначення: data ZonedTime = ZonedTime { zonedTimeToLocalTime :: LocalTime zonedTimeZone :: TimeZone } data TimeZone = TimeZone { timeZoneMinutes :: Int, timeZoneSummerOnly :: Bool, timeZoneName :: String } вибач за каламбур, але цей TimeZone не є часовою зоною, а лише зрізом часової зони в певний момент.
не бачу такого поняття як Instant, лише UTCTime. не бачу очевидно необхідного HistoricalTimeZone із: cutTimeZone :: HistoricalTimeZone -> UTCTime -> TimeZone historicalTimeZoneDstOffset :: HistoricalTimeZone -> UTCTime -> Int timeZoneShortName :: TimeZone -> UTCTime -> String і щоб час прив'язувався саме до історичних зон.
якщо їх і немає, то haskell time library навіть не є бібліотекою роботи з часом, здається мені це не більше ніж трохи узагальнена парсилка дат.
знайшов розширення, відповідно є історичні зони, але працювати насправді доведеться в UTC а потім конвертувати по серіям: timezone { series ; olson } In Data.Time, the TimeZone data type does not actually represent an entire timezone. Rather, it only represents a specific clock setting that is used in the timezone, possibly one of several clock settings that may apply at different times. This package introduces a new data type, TimeZoneSeries, that represents an entire timezone with all of its possible clock settings. It also provides more reliable variants of some functions in Data.Time that rely upon information about a timezone.
(no subject)
10/7/12 13:45 (UTC)(no subject)
10/7/12 19:57 (UTC)* Итервалов дат. Арифметики над интервалами дат: сравнение/пересечение/дополнение;
* Частичных дат (хотя что-то похожее я, кажется, увидел), и типа данных "поле даты" со значением "день/час/минута/секунда";
* Аналога йодовского "периода", как-то "2 дня 3 часа" (это не всегда 51 час).
Может быть, это всё делается средствами другой части стандартной библиотеки Хаскелля - буду рад просветиться.
Но вообще, я был излишне резок. Мне показалось, что в time нет операции "следующий вторник после 16го числа" или разных типов для даты с таймзоной и без. Присмотрелся - увидел.
(no subject)
10/7/12 20:29 (UTC)Возможно сделать через пары дат. Не спорю, что этого нет, но это тривиально.
http://www.haskell.org/ghc/docs/6.10.4/html/libraries/time/Data-Time-LocalTime.html содержит "поля данных": см TimeOfDay и LocalTime. LocalTime содержит Day, который может быть спроецирован в год, месяц и день.
Follow the types!
Насчёт периода не знаю. Наверняка это тоже можно сделать и это опять же будет тривиально.
(no subject)
11/7/12 20:15 (UTC)> Data-Time-LocalTime содержит "поля данных": см TimeOfDay и LocalTime. LocalTime содержит Day, который может быть спроецирован в год, месяц и день.
Это не то. В Йоде я могу соорудить период "3 часа", состоящий отдельно из переменных "количество=3" и "единица измерения=час".
Хотя полезность этой фичи и маргинальна.
> Насчёт периода не знаю. Наверняка это тоже можно сделать и это опять же будет тривиально.
А вот тут не верю. Не вижу, чтобы time-овские абстракции подходили для выражения такого понятия. И операции прибавления периода "add :: LocalTime -> TimeOfDay -> LocalTime" или "add :: LocalTime -> Day -> LocalTime" я не вижу, всюду прибавляются только Int-ы.
Это, пожалуй, моя единственная существенная претензия к time.
Прибавлять именно Period приходится довольно часто. При построении графиков, например, надо идти в цикле с шагом в Period, и алгоритм должен работать для Period-а размерности Day и размерности Pico - а в time это разные типы.
(no subject)
12/7/12 14:38 (UTC)как они все ведут себя на весенне/осенних сдвигах?
а две последние на исторических сдвигах?
вітя, мінус joda - власна dbtz.
ми не використовуємо joda-time dbtz, адаптуємо jre dbtz + parser POSIX TZ,
аби коли закони міняються сис міняв конфу енва, а не викладати "новий випуск".
(no subject)
12/7/12 14:49 (UTC)Если ты к
А собственная база данных таймзон? А она не из JRE берётся? "Тады ой".
(no subject)
13/7/12 05:17 (UTC)data ZonedTime = ZonedTime {
zonedTimeToLocalTime :: LocalTime
zonedTimeZone :: TimeZone
}
data TimeZone = TimeZone {
timeZoneMinutes :: Int,
timeZoneSummerOnly :: Bool,
timeZoneName :: String
}
вибач за каламбур, але цей TimeZone не є часовою зоною, а лише зрізом часової зони в певний момент.
не бачу такого поняття як Instant, лише UTCTime.
не бачу очевидно необхідного HistoricalTimeZone із:
cutTimeZone :: HistoricalTimeZone -> UTCTime -> TimeZone
historicalTimeZoneDstOffset :: HistoricalTimeZone -> UTCTime -> Int
timeZoneShortName :: TimeZone -> UTCTime -> String
і щоб час прив'язувався саме до історичних зон.
якщо їх і немає, то haskell time library навіть не є бібліотекою роботи з часом,
здається мені це не більше ніж трохи узагальнена парсилка дат.
(no subject)
13/7/12 06:48 (UTC)(no subject)
13/7/12 13:23 (UTC)(no subject)
13/7/12 05:27 (UTC)але працювати насправді доведеться в UTC а потім конвертувати по серіям:
timezone { series ; olson }
In Data.Time, the TimeZone data type does not actually represent an entire timezone. Rather, it only represents a specific clock setting that is used in the timezone, possibly one of several clock settings that may apply at different times. This package introduces a new data type, TimeZoneSeries, that represents an entire timezone with all of its possible clock settings. It also provides more reliable variants of some functions in Data.Time that rely upon information about a timezone.