461045462 发表于 2011-4-26 18:14:45

回复 zml84 的帖子

计算出来有误,星期的数据是否要调整一下。
另外好像平年、闰年的计算方式不一样
例如:
二十一世纪新前年虫算法(20%4*5=0)
   公式:某日星期几=(百年%4*5天+年+年/4+闰年月星期表+日+2天)%7
                   =(20%4*5天+年+年/4+闰年月星期表+日+2天)%7
   即:某日星期几=(年+年/4+闰年月星期表+日+2天)%7

pengq2010 发表于 2011-4-27 10:23:20


貌似程序出错了,今天应该是星期三。

pengq2010 发表于 2011-4-27 10:36:45

;;;显示日期、星期几
;;;zml84 修改后
;;;pengq2010 2011.04.27 修改("二" "三" "四" "五" "六" "日" "一" )
(defun c:TE (/ tmp y m d lst)
(setq      tmp (rtos (getvar "cdate") 2 0)
      y   (substr tmp 1 4)
      m   (substr tmp 5 2)
      d   (substr tmp 7 2)
)
(setq      tmp (fix (getvar "date"))
      tmp(rem (1- tmp )7)
      lst '("二" "三" "四" "五" "六" "日" "一" )
      tmp (nth tmp lst)
)
(ALERT (STRCAT (strcat "今天是:" y "年" m "月" d "日")
               "\n\t星期"
               tmp
               "\n\n期待一个好日子,"
               "\n继续埋首工作里,"
               "\n期待着下一个假期"
         )
)
)

zml84 发表于 2011-4-27 12:35:04

本帖最后由 zml84 于 2011-4-27 12:55 编辑

一、10楼帖子已更正,计算应无误。【更正内容为:第10行函数 1- 修改为 1+ 即可】

二、若要以年月日做纯数值计算,请验证下面函数:

;;;=============================================
;|
w = (d + 1 + 2*m + (3*m+3)/5 + y + y/4 - y/100 + y/400) mod 7
: 其中的除法均为整除(向下取整)
: w 为星期数,星期日为 0
: d 为日期数
: m 为月数,1月2月算作前一年的13月14月
: y 为年数
: 比如 2000年1月1日,d=1, m=13, y=1999,算得 w=6
:      2002年5月17日, d=17, m=5, y=2002, 算得 w=5
|;
;;;=============================================
;;;功能:已知年月日,获取星期几
;;;返回:星期几,0表示星期日。
(defun ZL-GetWeek (yyyy mm dd / tmp)
(if (<= mm 2)
    (setq mm   (+ mm 12)
          yyyy (1- yyyy)
    )
)
(setq      tmp (+ 1
               dd
               (* 2 mm)
               (/ (+ (* 3 mm) 3) 5)
               yyyy
               (/ yyyy 4)
               (/ yyyy -100)
               (/ yyyy 400)
            )
)
;;(print tmp)
(rem tmp 7)
)
;;;=============================================


三,不得不说,明经论坛lisp代码着色有待大大提高。

461045462 发表于 2011-4-27 19:51:52

本帖最后由 461045462 于 2011-4-27 20:05 编辑

原10楼帖子修改下面语句也行,好像不必修改:1- 修改为 1+
lst '("二" "三" "四" "五" "六" "日" "一" )

13楼已经修改了,没有注意,不好意思

pengq2010 发表于 2011-4-28 12:00:36

本帖最后由 pengq2010 于 2011-4-28 12:08 编辑

回复 zml84 的帖子

请教下data的值是什么值,怎么换算的呢。

iamhuangjinming 发表于 2016-7-12 21:00:38

pengq2010 发表于 2011-4-27 10:36 static/image/common/back.gif


没法运行的,是有隐藏的东西么。。。
页: 1 [2]
查看完整版本: 计算星期几