首页 > 代码库 > 遍历日历的每一天

遍历日历的每一天

一个需求,需要从20140101那天开始,然后一直找到8月份。

用newlisp计算日期的话,需要考虑日历月的天数不一样。比较容易的方法是采用epoch秒数,然后每次加一天的描述,再转换成日期字符串,下面的代码如下:

#!/usr/bin/newlisp

(println "ok")

(set ‘start-date "20140101 00:00")
(set ‘start-seconds (date-parse start-date "%Y%m%d %H:%M"))
(set ‘day-seconds (* 3600 24))

(set ‘x 0)
(while (< x 240)
  (begin
   (set‘ compute-date (date (+ (* day-seconds x) start-seconds) 0 "%Y%m%d"))
   (println compute-date)
   (inc x)
  ))

(exit)

运行结果:

20140101
。。。
20140813
20140814
20140815
20140816
20140817
20140818
20140819
20140820
20140821
20140822
20140823
20140824
20140825
20140826
20140827
20140828

经过检查,每个月的天数都是正确的。

这里主要用到了newlisp的几个函数:

date-parse 将指定日期字符串转换成秒数

date将秒数转换成日期字符串



遍历日历的每一天