首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Haskell显示月份第一个工作日

Haskell是一种函数式编程语言,它具有强静态类型系统和高度抽象的特点。在使用Haskell显示月份第一个工作日时,可以通过以下步骤实现:

  1. 首先,我们需要定义一个函数来确定给定年份和月份的第一个工作日。工作日通常是指周一至周五,不包括周末。
代码语言:txt
复制
import Data.Time.Calendar
import Data.Time.Calendar.WeekDate

getFirstWorkday :: Integer -> Int -> Day
getFirstWorkday year month = findFirstWorkday (fromGregorian year month 1)

findFirstWorkday :: Day -> Day
findFirstWorkday date
  | weekDay == 6 = addDays 2 date
  | weekDay == 7 = addDays 1 date
  | otherwise = date
  where
    (_, _, weekDay) = toWeekDate date
  1. 接下来,我们可以编写一个函数来接收用户输入的年份和月份,并调用上述函数来获取第一个工作日。
代码语言:txt
复制
import Text.Read

main :: IO ()
main = do
  putStrLn "请输入年份:"
  yearInput <- getLine
  putStrLn "请输入月份:"
  monthInput <- getLine
  let maybeYear = readMaybe yearInput :: Maybe Integer
      maybeMonth = readMaybe monthInput :: Maybe Int
  case (maybeYear, maybeMonth) of
    (Just year, Just month) -> putStrLn $ "第一个工作日是:" ++ show (getFirstWorkday year month)
    _ -> putStrLn "输入无效,请重新运行程序并输入有效的年份和月份。"

这段代码首先提示用户输入年份和月份,然后将输入的字符串转换为对应的整数类型。接着,使用模式匹配来判断输入是否有效,并调用getFirstWorkday函数来获取第一个工作日。最后,将结果打印输出。

这是一个简单的示例,展示了如何使用Haskell来显示月份的第一个工作日。在实际应用中,可以根据具体需求进行扩展和优化。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云函数计算(Serverless):https://cloud.tencent.com/product/scf
  • 腾讯云容器服务(容器化部署):https://cloud.tencent.com/product/tke
  • 腾讯云数据库(云数据库):https://cloud.tencent.com/product/cdb
  • 腾讯云服务器(云服务器):https://cloud.tencent.com/product/cvm
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(IoT):https://cloud.tencent.com/product/iotexplorer
  • 腾讯云移动开发(移动开发平台):https://cloud.tencent.com/product/mpt
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链(区块链服务):https://cloud.tencent.com/product/baas
  • 腾讯云虚拟专用网络(VPC):https://cloud.tencent.com/product/vpc
  • 腾讯云安全产品(云安全):https://cloud.tencent.com/product/saf
  • 腾讯云音视频(云直播):https://cloud.tencent.com/product/lvb
  • 腾讯云元宇宙(云游戏):https://cloud.tencent.com/product/ugc
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

c++:怎么将ctime时间转化为一个具体的秒数值_Python格式化时间和日期

它带有两个参数,如以下语法所示:   time.strftime(format, t)  第一个参数是格式字符串,而第二个参数是要格式化的时间,这是可选的。  ...("%b %d %Y %H:%M:%S"))  输出:   Sep 15 2018 00:00:00  我们使用以下字符串格式化日期:  %b:返回月份名称的前三个字符。...%H:%M:%S"))  输出:   Sep 15 2018 12:45:35  完整的字符代码列表  除了上面给出的字符串之外,该strftime方法还采用其他几种指令来格式化日期值:  %a:返回工作日的前三个字符...%A:返回工作日的全名,例如,星期三。%B:返回月份的全名,例如9月。%w:以数字形式返回工作日,从0到6,星期日为0。%m:以数字形式返回月份,从01到12。%p:返回AM / PM时间。...如您所见,使用这些格式代码,您几乎可以使用任何格式表示日期时间。

3.5K00
  • 清明节加班最多,近三成码农用两种及以上语言编程,这是15000名中国码农的日常

    样本程序员地域分布情况(单位:人) 加班情况 近三成程序员周末加班,30% 加到晚上 10 点 报告显示,在周末加班编写代码的程序员(周六、周日有一天加班即计算在内)占调查样本总数的 28.36%; 其中...调查报告显示,在国家法定节假日中,程序员加班人数比例最高的假日是清明节(加班人数占总调查人数的 30.09%),加班人数比例最低的是端午节(加班人数占总调查人数的 18.25%)。...每月活跃情况 5 月份、11 月份工作日程序员最忙,1 月份稍清闲 在工作日的相关统计中,我们发现一年中程序员在 5 月份和 11 月份的每日平均编程时间最长(两者几乎相同),1 月份程序员的每日平均编程时间最短...各月份工作日中程序员每天平均编码时间统计(以 1 月份为基准) 节假日 3 月最忙,2 月最闲 在对节假日加班的统计中,程序员在 3 月份的节假日中每日平均编程时间最长,2 月份的平均每日编程时间最短...样本程序员在各工作日完成代码量占周代码量的比率(百分比) 编程语言&IDE 使用 近三成程序员使用两种及以上编程语言进行开发 这份报告还调查了编程语言和 IDE 的使用情况(注:统计范围限于 aiXcoder

    94510

    Data Science | 这些时间序列的骚操作啊

    , freq='D') freq的使用(1) - 固定频率时间序列的生成 基础使用如下: print(pd.date_range('2017/1/1','2017/1/4')) # 默认freq =...# BQ-月:指定月为季度末,每个季度末最后一月的最后一个工作日 # BA-月:每年指定月份的最后一个工作日 生成指定规律的特殊时间: print(pd.date_range('2017','2018...# QS-月:指定月为季度末,每个季度末最后一月的第一个日历日 # AS-月:每年指定月份第一个日历日 print(pd.date_range('2017','2018', freq = 'BMS...freq = 'BQS-DEC')) print(pd.date_range('2017','2020', freq = 'BAS-DEC')) print('------') # BMS:每月第一个工作日...# BQS-月:指定月为季度末,每个季度末最后一月的第一个工作日 # BAS-月:每年指定月份第一个工作日 freq的使用(3) - 复合频率的使用 生成指定复合频率的时间序列: print(pd.date_range

    75220

    你需要的Excel常用函数都在这里!

    EOMONTH() EOMONTH(start_date, months) 返回某个月份最后一天的序列号,该月份与 start_date 相隔(之后或之后)指示的月份数。...使用函数 EOMONTH 可以计算正好在特定月份中最后一天到期的到期日。 start_date 必需。开始日期。 应使用DATE 函数输入日期,或者将日期作为其他公式或函数的结果输入。...工作日不包括周末和专门指定的假日。在计算发票到期日、预期交货时间或工作天数时,可以使用函数 WORKDAY 来扣除周末或假日。 start_date 必需。开始日期。 days 必需。...使用函数 EDATE 可以计算与发行日处于一月中同一天的到期日的日期。 start_date 必需。开始日期。 months 必需。start_date之前或之后的月份数。...需要重复显示的文本。 number_times 必需。用于指定文本重复次数的正数。 该函数的一些说明: 如果 number_times 为 0,则 REPT 返回 ""(空文本)。

    4K32

    Python的strftime函数与calendar模块函数

    20-11-24 08:53:19 二、calendar模块函数  calendar日历模块提供与日历相关的功能,在默认情况下,日历把星期一作为周一的一天,星期日作为最后一天,为了改变这种设置,可以使用...- setfirstweekday(weekday):设置每个星期的开始工作日代码。星期代码是0-6,代表星期一~星期日。 ...- firstweekday():返回当前设置的每个星期开始工作日,默认为0,也就是星期一。  - isleap(year):如果指定年份是闰年则返回True,否则返回False。 ...- month(year,month):返回指定年份和月份的日历。 ...- monthrange(year,month):返回两个整数,返回的第一个数代表指定年和月的第一天是星期几,返回的第二个数代表所指定月份的天数。

    89650

    python自学——函数-strftim

    它可以用以下的符号对日期和时间进行格式化: %a - 简写的星期几  %A - 完整的星期几  %b - 缩写的月份名称  %B - 完整的月份名称  %c - 首选日期和时间表示  %C - 世纪值(...31)  %g - 类似于%G,但是没有世纪  %G - 对应于ISO周数4位数的年份(参见%V)  %h - 类似于 %b  %H - 小时,使用24小时制(00?...23)  %I - 小时,使用12小时制(01?12)  %j - 一年中的哪一天(001?366)  %m - 月份(01?...r - 时间在上午和下午的符号:am/pm  %R - time in 24 hour notation  %S - 秒  %t - 制表符  %T - 当前时间,等于 %H:%M:%S  %u - 工作日为数字...警告:在Sun Solaris上周日=1  %U - 当年的周数,第一个星期日作为第一周的第一天  %V - 本年度ISO 8601的周数(01到53),其中,第1周是在本年度至少4天的第一个星期,星期一作为一周的第一天

    1K30

    SpringBoot整合Scheduled(定时任务器)

    Minutes Hours Day Month Week Year Seconds Minutes Hours Day Month Week 结构   corn 从左到右(用空格隔开):秒 分 小时 月份中的日期...月份 星期中的日期 年份 各字段的含义 位置 时间域名 允许值 允许的特殊字符 1 秒 0-59 , - * / 2 分钟 0-59 , - * / 3 小时 0-23 , - * / 4 日 1-31...L 在日期字段中,表示这个月份的最后一天,如一月的 31 号,非闰年二月的 28 号;如果 L 用在星期中,则表示星期六,等同于 7。...W 字符串只能指定单一日期,而不能指定日期范围; ●LW 组合:在日期字段可以组合使用 LW,它的意思是当月的最后一个工作日; ●井号(#):该字符只能在星期字段中使用,表示当月某个工作日。...//每个季度的第一个月的一号的 1:00:00 执行一次 @Scheduled(cron = “0 0 1 1 * ?”)

    89420

    傻妞教程-计划任务Crontab定时执行时间如何计算

    | | +----- 星期几 (0 - 7)(星期日=0 或 7)或星期日、星期一、星期二、星期三、星期四、星期五、星期六 | | | | +---------- 月份...例如,在第5个字段(星期几)中使用 MON,WED,FRI 表示周一、周三和周五。 连字符定义范围。例如,2000-2010 表示2000年至2010年期间的每年,包括2000年和2010年。...除非用反斜杠()转义,否则命令中的百分号(%)会被替换成换行符,第一个百分号后面的所有数据都会作为标准输入发送给命令。 非标准字段 “L”代表“Last”。...当在星期几字段中使用的时候,可以指定给定月份的结构,例如“最后一个星期五”(5L)。在月日字段中,可以指定一个月的最后一天。 “day of month”字段可以使用“W”字符。...指定最接近给定日期的工作日(星期一-星期五)。例如,15W,意思是:“最接近该月15日的工作日。”;所以,如果15号是星期六,触发器在14号星期五触发。如果15日是星期天,触发器在16日星期一触发。

    47970

    如何在腾讯云CVM中使用Date命令

    date命令显示当前日期和时间。它还可用于以您指定的格式显示或计算日期。或使用它来设置系统时钟。 个人推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后在购买服务器。...使用Linux date命令 如果在没有选项的情况下使用,该date命令将显示当前系统日期和时间,包括星期几,月份,时间,时区和年份: date Thu Apr 13 10:04:04 EDT 2017...需要指定日期,您可以使用-d标记: date -d "1974-01-04" Fri Jan 4 00:00:00 EST 1974 date有许多显示格式选项。...%V是格式化选项,用于显示当前周数,并%y表示年份的最后两位数字。 格式化选项 运行date --help以显示格式选项列表。...以下是格式化令牌date支持的一小部分示例: 标记 内容 %a 本机的工作日名称缩写(例如,Sun) %a 本机的完整工作日名称(例如,星期日) %b 本机的月份名称缩写(例如,Jan) %B 本机的完整月份名称

    1.6K20

    SpringBoot整合Scheduled(定时任务器)

    Seconds Minutes Hours Day Month Week Year Seconds Minutes Hours Day Month Week 结构 corn 从左到右(用空格隔开):秒 分 小时 月份中的日期...月份 星期中的日期 年份 各字段的含义 位置 时间域名 允许值 允许的特殊字符 1 秒 0-59 , - * / 2 分钟 0-59 , - * / 3 小时 0-23 , - * / 4 日 1-31...L 在日期字段中,表示这个月份的最后一天,如一月的 31 号,非闰年二月的 28 号;如果 L 用在星期中,则表示星期六,等同于 7。...W 字符串只能指定单一日期,而不能指定日期范围; LW 组合:在日期字段可以组合使用 LW,它的意思是当月的最后一个工作日; 井号(#):该字符只能在星期字段中使用,表示当月某个工作日。...//每个季度的第一个月的一号的 1:00:00 执行一次@Scheduled(cron = “0 0 1 1 * ?”)

    88210

    DATE_FORMAT() 函数解读【MYSQL】

    MySQL中的DATE_FORMAT()函数是一个非常有用的工具,它允许你按照指定的格式显示日期/时间值。这个函数非常灵活,可以处理各种日期和时间格式的需求。...格式描述示例%a缩写的工作日名称Sun, Mon, Tue, Wed, Thu, Fri, Sat%b缩写的月份名称Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep..., Oct, Nov, Dec%c数字表示的月份1, 2, ..., 12%D月份中的某天,带有后缀1st, 2nd, 3rd, 4th, ..., 31st%e月份中的某天,不带前导零1, 2, .....January, February, ..., December%p上午或下午标记AM, PM%S秒00, 01, ..., 59%U周数(以周日为一周的第一天)00, 01, ..., 53%W完整的工作日名称...使用DATE_FORMAT()函数时,请确保你提供的格式字符串是有效的,否则可能会导致不可预测的结果。

    3.3K32

    又肝了3天,整理了80个Python DateTime 例子,必须收藏!

    7个工作日 从今天的日期和一个人的生日推算年龄 获得本月的第一个星期二 将整数转换为日期对象 当前日期减去 N 天的天数 比较两个日期 从 datetime 对象中提取年份 在 Python 中找到星期几...将 N 小时数添加到当前日期时间 从当前日期获取年、月、日、小时、分钟 获取特定月份和年份的最后一个星期日 查找特定日期的年份中的哪一天 查找当前日期是工作日还是周末 组合 datetime.date...将数据时间对象转换为 Unix(时间戳) 将年、月、日、时、分、秒的 N 个数字添加到当前日期时间 获取指定开始日期和结束日期之间的日期范围 减去 N 个年、月、日、时、分、秒到当前日期时间 获取指定年份和月份月份第一天的工作日月份的天数...打印特定年份的所有星期一 打印特定年份的日历 从月份编号中获取月份名称 从给定日期获取一周的开始和结束日期 根据当前日期查找上一个和下一个星期一的日期 获取当前季度的第一个日期和最后一个日期 1使用...Subtract 6 mins: 2017-04-04 18:30:29.213046 Subtract 6 seconds: 2017-04-04 18:36:23.213046 74获取指定年份和月份月份第一天的工作日月份的天数

    8.8K30

    特别教程-CronTrigger教程

    cron表达式很强大,但是它使用起来也有可能相当混乱(这里大概的意思是说cron的用法相对复杂,容易出错)。...W:英文单词"weekday"的缩写,即工作日(星期一到星期五)。...注意: 'L'和'W'字符可以Day of month字段合并使用,也就是在Day of month字段中使用'LW',转换为“月份的最后一个工作日”。 例如:"0 0 12 1LW * ?"...表示每个月的最后一个工作日中午12点触发。 #:用于指定月份的"第n个"星期XXX*(格式:n#p,表示月份的第p个星期n,n由1开始,1表示星期日)。...例如:“2#1"表示月份第一个星期一,“4#5"表示月份的第五个星期三。注意最后这个例子,如果你指定了”#5”,并且月份的星期数不超过5个,那么该月份不会触发任何调度。

    2.7K10

    原创 | Springboot任务

    每个月的最后一个工作日凌晨2点执行一次 * 【0 0 2-4 ?...* 1#1】每个月的第一个周一凌晨2点到4点期间,每个整点都执行一次; */ // @Scheduled(cron = "0 * * * * MON-SAT") //@Scheduled...如果在DayofWeek域使用5L,意味着在最后的一个星期四触发。 (7)W:表示有效工作日(周一到周五),只能出现在DayofMonth域,系统将在离指定日期的最近的有效工作日触发事件。...例如:在 DayofMonth使用5W,如果5日是星期六,则将在最近的工作日:星期五,即4日触发。如果5日是星期天,则在6日(周一)触发;如果5日在星期一到星期五中的一天,则就在5日触发。...另外一点,W的最近寻找不会跨过月份 。 (8)LW:这两个字符可以连用,表示在某个月最后一个工作日,即最后一个星期五。 (9)#:用于确定每个月第几个星期几,只能出现在DayofMonth域。

    38120

    定时任务cron表达式详解_el表达式详解

    ,所谓最近工作日,即当天到工作日的前后最短距离,如果当天即为工作日,则距离为0;所谓本月内的说法,就是不能跨月取到最近工作日,即使前/后月份的最后一天/第一天确实满足最近工作日;因此,”LW”则意味着本月的最后一个工作日触发...,”W”强烈依赖{月份} “C” 根据日历触发,由于使用较少,暂时不做解释 { 月份} ==> 允许值范围: 1~12 (JAN-DEC),不允许为空值,若值不合法,调度器将抛出SchedulerException...异常 “*” 代表每个月都触发; “,” 代表在指定的月份触发,比如”1,6,12″代表1月份、6月份和12月份触发任务 “-“代表在指定的月份范围内触发,比如”1-6″代表从1月份开始触发到6月份结束触发...,”#”前面代表星期,”#”后面代表本月第几周,比如”2#2″表示本月第二周的星期一,”5#3″表示本月第三周的星期四,因此,”5L”这种形式只不过是”#”的特殊形式而已 “C” 根据日历触发,由于使用较少...代表触发步进(step),”/”前面的值代表初始值(“*”等同”1970”),后面的值代表偏移量,比如”2011/2″或者”*/2″代表从2011年开始触发,每隔2年触发1次 注意:除了{日期}和{星期}可以使用

    90430

    Excel实战技巧:使用日期时间值

    例如,可能希望将日期显示为“2021年7月28日,星期三”,可以使用单元格格式来执行此操作。...图1 5.找出给定日期是星期几 如果想要确定一天是周末还是工作日,只需使用WEEKDAY()函数即可完成此操作。...如果你想从星期一开始一周,则使用=WEEKDAY("2021-7-28",2)。 6.使用条件格式突出显示周末 如果想要在一系列日期值中突出显示周末,则可以使用条件格式,如下图2所示。...MONTH函数:返回月份值。 YEAR函数:返回年份值。 TODAY函数:返回当前日期。 TEXT函数:根据指定的格式将日期转换成相应的日期格式显示。...1.Excel 显示#####而不是日期或时间值 如果单元格太小而无法完全显示值,就会发生这种情况,此时应尝试调整列宽。 如果使用不正确的值作为日期和时间,也会发生这种情况。

    3.8K30

    【C语言】分支语句详解

    : 解析:这里有三个条件,要么月份等于3,要么月份等于4,要么月份等于5,只要其中一个成立就会打印春天,只有都不满足这三个条件的月份才不会打印春天,即只有所有表达式为假,才会返回假,其余都返回真...如果找不到对应的值, 就执⾏ default 分⽀ switch语句和if语句对比:比如要实现:输⼊任意⼀个整数值,计算除2之后的余数,使用if语句为: 使用Switch语句为: 上述的代码中...此时就可以使用default,比如: 此时如果用户输入1~7之外的数字,也就是不在case中的数字,就会显示输入错误,相当于一个提示信息 default的顺序: 不少人认为default...必须放在最后,实际上default和case语句没有严格的顺序要求,只不过习惯将default放在最后,实际上是可以放在前面,甚至放在第一个也可以 Switch语句练习 如果上述需求发⽣变化,变为:...输入1,2,3,4,5都会打印工作日,那么不如直接将打印工作日放在case 5,然后用break结束,假设从case 1进入,什么也没有,就会往下面继续执行,知道碰见了case 5,打印了工作日后,break

    6210
    领券