Haskell: извлечение Int из POSIXTime / NominalDiffTime
Я подписываю веб-запросы, и в качестве части строки запроса мне нужно включить
oauth_timestamp=123456789
где 123456789
- номинальное время с 1970-01-01 00: 00 UTC.
Я использую POSIXTime для его представления, которое является просто псевдонимом типа для NominalDiffTime.
У меня возникают проблемы, когда я хочу преобразовать POSIXTime / NominalDiffTime в текст, чтобы я мог добавить его в коллекцию элементов строки запроса.
Проблема возникает из-за того, что конструктор для NominalDiffTime является частным, и поэтому я не могу извлечь фактическое число.
Даже избитый способ использования show
добавит "s", генерируя 123456789s
.
1 ответ:
Это можно было бы квалифицировать как пример typeclasses, делающих API более эзотерическими, чем они должны быть:
NominalDiffTime
реализуетRealFrac
, типкласс дробей произвольной точности. В результате вам доступна функцияfloor
:λ> import Data.Time.Clock.POSIX λ> pt <- getPOSIXTime λ> pt 1458787669.804632s λ> toRational pt 182348458725579 % 125000 λ> floor pt :: Int 1458787669