haskell中是否有一个函数允许我输入日期的组成部分(如字符串表示或日月组件),我可以从中获取信息(如星期几,一个月中的日期等) ?
我看过网上看起来有很多自定义库,但是我希望ghci 10.6.4的标准前奏库中有一个没有很好的文档?
感谢您提供任何信息:)
答案 0 :(得分:8)
Data.Time.Calendar中的Data.Time.Format和time library是否足够?
您可以使用gregorianMonthLength
解析日期的字符串表示并获取一个月的长度。虽然您可以使用仅显示工作日的格式将日期格式化为字符串,但不确定星期几。
答案 1 :(得分:2)
快速Google搜索会出现this,这可能就是您想要的。它允许您解析表示日期的字符串并从中提取信息。
答案 2 :(得分:1)
您可以找到mondayStartWeek
或sundayStartWeek
的星期几,具体取决于您是认为一周是星期一还是星期日。这两个函数都在Data.Time.Calendar.OrdinalDate
。
λ> snd $ mondayStartWeek $ fromGregorian 2017 10 3
2
在上面的示例中,返回值为2
,表示一周的第二天。由于该函数被称为mondayStartWeek
,因此星期一是第一天,因此2
对应于星期二。 2017年10月3日确实如此。
两个函数都返回一个元组,其中第二个元素是工作日。据我所知,这应该是值得信赖的。
然而,第一个元素是一年中的周数。要小心,因为周编号的规则是政治性的。如果我没记错的话,在美国,第1周是包含1月1日的那一周。在我住的丹麦,情况并非如此。在这里,第1周是新的一年周四下降的第一周。这可能意味着12月31日可能会在明年的第1周落下。 IIRC,这是许多其他欧洲国家的规则。有些年头,美国和欧洲的一周数字一致,但有些年份,它们并没有。