2010-01-10 28 views
13

Có chức năng nào trong haskell cho phép tôi nhập thành phần của một ngày (như biểu diễn chuỗi hoặc thành phần của tháng trong tháng) mà tôi có thể lấy thông tin (như ngày trong tuần, ngày trong tháng, v.v ...) không?Có chức năng haskell cho các ngày không?

Tôi đã xem trực tuyến và có vẻ như có rất nhiều thư viện tùy chỉnh, nhưng tôi hy vọng có thư viện prelude chuẩn của ghci 10.6.4 không được ghi chép đầy đủ?

Thanks cho bất kỳ thông tin :)

+0

Tôi vẫn không thể tìm thấy hàm: ** 'dayOfWeek :: SomeDateType -> WeekDayType' **. –

+0

Ví dụ: 'dayOfWeek (fromGregorian 2014 7 15) {- evals to Tuesday -}' –

Trả lời

8

Có phải Data.Time.CalendarData.Time.Format trong số time library có đủ không?

Bạn có thể phân tích cú pháp biểu diễn chuỗi của một ngày và nhận độ dài của tháng sử dụng gregorianMonthLength. Bạn không chắc chắn về ngày trong tuần, mặc dù bạn có thể định dạng ngày làm chuỗi bằng cách sử dụng định dạng chỉ hiển thị ngày trong tuần.

+0

Tôi đã nhìn thấy Lịch, nhưng tôi nghĩ rằng tôi không nhìn vào định dạng dường như có hầu hết các thông tin mà tôi cần :) Cảm ơn! – Fry

+0

(... noob hiển nhiên là mới với haskell): Tôi đang sử dụng GHC. Tôi không thể tìm thấy các mô-đun cho thời gian bất cứ nơi nào trên máy tính của tôi. googling cho nó không cho tôi bất kỳ hit cho một nơi mà nó sống. Tôi bối rối. Đó là một phần của tiêu chuẩn GHCI dist & nếu như vậy, nơi mà các mô-đun sẽ được heck, nếu không, nơi tôi có thể nhận được các mô-đun? thx –

+0

Tốt nhất tôi tìm thấy, nhưng thư viện có thể sử dụng một số cải tiến. Xem nhận xét của tôi về câu hỏi của OP. –

2

Một tìm kiếm Google nhanh chóng quay lên this, có thể là những gì bạn muốn. Nó cho phép bạn phân tích chuỗi đại diện cho ngày tháng và trích xuất thông tin từ chúng.

+0

Tôi đã hy vọng một cái gì đó trong thư viện chuẩn vì vậy tôi sẽ không phải bảo đảm người dùng cuối sẽ có thư viện bên ngoài spesific :) – Fry

+2

của người dùng cuối bạn có? một thư viện Haskell không phải là một cái gì đó giống như python/perl/ruby ​​rất muộn ràng buộc soo nếu bạn biên dịch mã của bạn, bạn nên một a.out rắn a.out – Jonke

0

Bạn có thể tìm ngày trong tuần với mondayStartWeek hoặc sundayStartWeek, tùy thuộc vào việc bạn nghĩ một tuần bắt đầu vào Thứ Hai hay vào Chủ Nhật. Cả hai chức năng đều có trong Data.Time.Calendar.OrdinalDate.

λ> snd $ mondayStartWeek $ fromGregorian 2017 10 3 
2 

Trong ví dụ trên, giá trị trả lại là 2, cho biết ngày thứ hai trong tuần. Vì hàm được gọi là mondayStartWeek, thứ Hai là ngày đầu tiên, do đó, 2 tương ứng với Thứ Ba. Điều này đúng với ngày 03 tháng 10, 2017.

Phạt cảnh cáo về số tuần

Cả hai chức năng trả về một tuple, nơi yếu tố thứ hai là các ngày trong tuần. Theo như tôi có thể nói, điều đó đáng tin cậy.

Phần tử đầu tiên, là số tuần trong năm. Hãy cẩn thận với điều đó, bởi vì các quy tắc đánh số tuần là chính trị. Nếu tôi nhớ chính xác, ở Mỹ, tuần 1 là tuần có chứa ngày 1 tháng 1. Đó không phải là trường hợp ở Đan Mạch, nơi tôi sống. Ở đây, tuần 1 là tuần đầu tiên mà thứ năm rơi vào năm mới. Điều này có nghĩa là ngày 31 tháng 12 có thể rơi vào tuần 1 của năm tiếp theo. IIRC, đây là quy tắc cho nhiều quốc gia châu Âu khác. Một vài năm, số tuần của người Mỹ và châu Âu sắp xếp, nhưng một vài năm, họ không làm như vậy.

Các vấn đề liên quan