一个需求,需要从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将秒数转换成日期字符串
时间: 2024-10-10 09:25:05