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.
Nguồn
2017-10-03 15:59:00
Tôi vẫn không thể tìm thấy hàm: ** 'dayOfWeek :: SomeDateType -> WeekDayType' **. –
Ví dụ: 'dayOfWeek (fromGregorian 2014 7 15) {- evals to Tuesday -}' –