date - 如何在球拍中循环日期?
问题描述
我想遍历从当前日期到某个停止日期的日期,例如 Python 中的以下示例:
import datetime
def count_dates(stop_date):
step = datetime.date.today()
while step >= stop_date:
yield step
step = step - datetime.timedelta(days=1)
def main():
for step in count_dates(datetime.date(2018, 1, 1)):
print(step.isoformat())
但是,我在 Racket 中没有看到任何日期计算功能。如何才能做到这一点?
解决方案
以下是使用gregor
. 具体来说,+days
and-days
函数在这里很有帮助:
#lang racket
(require gregor
racket/generator)
;; Date -> [Sequenceof Date]
(define (count-dates stop-date)
(in-generator
(let loop ([step (today)])
(when (date>=? step stop-date)
(yield step)
(loop (-days step 1))))))
(for ([step (count-dates (date 2018 1 1))])
(displayln (date->iso8601 step)))
如果您需要比“一些天数”更通用的东西,还有像+date-period
and之类的功能-date-period
。
推荐阅读
- kubernetes - Kubernetes 等待 apiVersion 和 kind 存在,然后再尝试使用它们来应用资源
- javascript - 在 typescript/javascript 中将 ISO-8601 字符串转换为本地日期
- node.js - 在firebase Nodejs中获取未定义的值
- android - 浮动操作按钮 展开到新视图
- android - 如何使用 android studio 将可绘制图像替换为所有屏幕尺寸的图像?
- java - CompressedClassSpaceSize 区域是否包含 MaxMetaspaceSize 区域?
- javascript - 无法将 aws-sdk 与 browserify 捆绑以在 k6 中使用 sdk 库
- c++ - 使用 pdf 页面中的 podofo 提取图像坐标(仅其 x、y、宽度、高度)
- php - 在同一个文件助手codeigniter中调用另一个函数
- javascript - 如何使用 JavaScript 根据键和值映射对象?