2016-03-24 14 views
5

Tôi đang ký yêu cầu web và là một phần của chuỗi truy vấn, tôi cần bao gồm oauth_timestamp=123456789 trong đó 123456789 là thời gian danh nghĩa từ 1970-01-01 00:00 UTC.Haskell: Trích xuất Int từ POSIXTime/NominalDiffTime

Tôi đã sử dụng POSIXTime để trình bày, đó chỉ là bí danh loại cho NominalDiffTime.

Tôi gặp sự cố khi tôi muốn chuyển đổi POSIXTime/NominalDiffTime thành Văn bản để tôi có thể thêm nó vào bộ sưu tập các mục chuỗi truy vấn.

Sự cố bắt nguồn từ thực tế là hàm tạo cho NominalDiffTime là riêng tư và vì vậy tôi không thể trích xuất số thực.

Thậm chí cách hacky sử dụng show cũng sẽ thêm "s" tạo ra 123456789s.

Có cách nào đơn giản để trích xuất số thực tế từ NominalDiffTime không?

Trả lời

5

Điều này có thể đủ điều kiện làm ví dụ về việc tạo kiểu chữ làm cho API trở nên bí truyền hơn là: NominalDiffTime thực hiện RealFrac, kiểu chữ của các phân số có độ chính xác tùy ý. Kết quả là, các floor chức năng có sẵn cho bạn:

λ> import Data.Time.Clock.POSIX 
λ> pt <- getPOSIXTime 
λ> pt 
1458787669.804632s 
λ> toRational pt 
182348458725579 % 125000 
λ> floor pt :: Int 
1458787669 
Các vấn đề liên quan