球拍(Scheme)程序,用于查找给定日期的星期几

时间:2012-11-16 23:05:15

标签: racket

我现在正在尝试创建一个球拍程序,显示输入日期(在01.01.2000和31.12.2100之间)作为一天。

最好的问候凯恩

2 个答案:

答案 0 :(得分:2)

time-related图书馆应该可以在这里提供帮助。

#lang racket

(require racket/date)

;; Given a day, month, and year, return the weekday
(define (day-month-year->weekday day month year)
  (define local-secs (find-seconds 0
                                   0
                                   0
                                   day
                                   month
                                   year
                                   #t))
  (define the-date (seconds->date local-secs))
  (vector-ref #("sunday" "monday" "tuesday" "wednesday" "thursday"
                         "friday" "saturday")
              (date-week-day the-date)))

例如,我在我的区域(2012年11月17日)写的这个日期是星期六,day-month-year->weekday函数也支持这个日期:

> (day-month-year->weekday 17 11 2012)
"saturday"

July 20, 1969应该是星期天:

> (day-month-year->weekday 20 7 1969)
"sunday"

答案 1 :(得分:1)

Zeller's congruence是您想要查看的算法。将算法从数学转换为Racket代码应该相当简单。

旁注:在询问StackOverflow时,有助于提出更具体的问题,并将其作为一个问题。它也可以帮助陈述你已经尝试过的东西。