gpt4 book ai didi

functional-programming - 比较 Racket 中的日期

转载 作者:行者123 更新时间:2023-12-04 08:40:42 25 4
gpt4 key购买 nike

Racket 中是否有任何内置函数来比较 2 个日期?

如果没有,谁能告诉我如何编写一个函数来比较 Racket 中的 2 个日期。我对函数式编程语言很陌生,请帮忙。

最佳答案

内置 Racket

Racket 内置date结构体:

(struct date (  second
minute
hour
day
month
year
week-day
year-day
dst?
time-zone-offset)

但不是特别好的以编程方式处理日期的函数,也就是说,如果您想在五分钟内知道日期,则必须自己完成所有分钟、小时、天、周、年和夏令时的包装。

类(class)粒度比较

可以使用 eq? 进行日期比较或 equal?eqv?就像任何其他 struct类型。
#lang racket

require racket/date)

(define then (current-date))

(define now (current-date))

并使用:
> (eq? then now)
#f
> (eq? then then)
#t

如果您关心纳秒级粒度,这很好,而不是如果您关心更大的事情,例如查看两个日期是否是同一天。

细粒度比较

要在天数级别比较日期,您必须编写如下内容:
(define (same-day? date1 date2)
(and (= (date-day date1)
(date-day date2))
(= (date-month date1)
(date-month date2))
(= (date-year date1)
(date-year date2))))

这可以用于:
"scratch.rkt"> (same-day? then now)
#t

认真的

如果您正在做真正重要的工作,那么处理日期真的很难。图书馆喜欢 Joda Time当获取正确的日期很重要时,存在于 Java 等语言中。不要根据您的本土日期库发射导弹。

关于functional-programming - 比较 Racket 中的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30354767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com