明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3694|回复: 16

[讨论] 计算星期几

  [复制链接]
发表于 2011-4-25 13:56:33 | 显示全部楼层 |阅读模式
;;;显示日期
;itoa函数将一个【整数】转换成【字符串】,并将该字符串返回
;rtos函数将一个【实数】转换成【字符串】,并将该字符串返回
;atof将一个【字符串】转换成【实数】,并将该字符串返回
;ATOI 字符串转整数
;subcat将多个字符串拼接成一个长字符串后返回
;substr将一个字符串按要求取出其中的字符。
;;;显示日期
(defun c:TE(/ tmp y m d txt1 pt1)
  (setq tmp (rtos (getvar "cdate") 2 8)
y   (rtos (atof (substr tmp 1 4)) 2 0)
m   (rtos (atof (substr tmp 5 2)) 2 0)
d   (rtos (atof (substr tmp 7 2)) 2 0)
txt1 (strcat "今天是:" y "年" m "月" d "日")
  )
  (SETQ M1(ATOI M))
  (SETQ D1(ATOI D))
  (SETQ YC(ATOI (substr Y 1 2)))
  (SETQ YA(ATOI (substr Y 3 2)))
  (IF (<= M1 2)
      (SETQ YA (+ 1 YA))
      (SETQ M1 (+ 12 M1))
  )
  (SETQ W (-
            (+ (/ YC 4) (/ YA 4) YA (ATOI(RTOS(* 2.6 (+ M1 1)))) D1)
            (* 2 YC)
            1
          )
  )      
  ;(SETQ TXT2 (STRCAT TXT1 (CHR 13) "今天是星期" W))
  ;(alert txt2)
  (SETQ W1 (- 7 (ATOI(RTOS (/ W 7)))))
  (IF (= 0 W1) (SETQ W2 "日"))
  (IF (= 1 W1) (SETQ W2 "一"))
  (IF (= 2 W1) (SETQ W2 "二"))
  (IF (= 3 W1) (SETQ W2 "三"))
  (IF (= 4 W1) (SETQ W2 "四"))
  (IF (= 5 W1) (SETQ W2 "五"))
  (IF (= 6 W1) (SETQ W2 "六"))
  (SETQ TXT2 (strcat "今天是星期" W2))
  (ALERT (STRCAT TXT1 (CHR 13) TXT2 (CHR 13)"期待一个好日子,"(CHR 13)"继续埋首工作里,"(CHR 13)"期待着下一个假期"))
  
)
想实现提示今天星期几,可总是参数的类型不对,怎么办?
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2011-4-25 13:57:36 | 显示全部楼层
SETQ W那句是蔡勤公式,计算星期几的
发表于 2011-4-25 14:23:08 | 显示全部楼层
本帖最后由 x_s_s_1 于 2011-4-25 14:23 编辑

(menucmd "M=$(edtime,$(getvar,date),DDDD)")
 楼主| 发表于 2011-4-25 14:42:27 | 显示全部楼层
x_s_s_1 发表于 2011-4-25 14:23
(menucmd "M=$(edtime,$(getvar,date),DDDD)")

这个可以得到日期,我的麻烦些,可目前是能得到日期,可不能通过日期代入蔡勤公式计算星期几,老是提示数据类型错误。stringgp2
发表于 2011-4-25 14:58:28 | 显示全部楼层
楼主好辛苦
发表于 2011-4-25 15:52:23 | 显示全部楼层
(setq a (menucmd "M=$(edtime,$(getvar,date), YYYY)")
      b (menucmd "M=$(edtime,$(getvar,date), MONTH)")
      c (menucmd "M=$(edtime,$(getvar,date), D)")
      d (menucmd "M=$(edtime,$(getvar,date), DDDD)")
      )
(SETQ TXT(STRCAT "今天是" a "年" b c "日" (CHR 13) d (CHR 13)"哥们儿这么累跳槽吧"))
(alert txt)
发表于 2011-4-25 22:48:39 | 显示全部楼层
不错,做得可以。
发表于 2011-4-25 23:08:03 | 显示全部楼层
本帖最后由 mandala 于 2011-4-25 23:08 编辑

顶一下楼主。我有时候非常佩服一些同志,他们会想到用lisp上网、听歌、看书……还要标注今天星期几。我做梦都没想到过要用lisp来干这种事。
 楼主| 发表于 2011-4-26 02:27:50 | 显示全部楼层
我那样写是为了计算星期几的,如果只是显示日期我的是麻烦些,我计算星期的公式没错,设断点也可以,但运行就提示类型错误,请教!
发表于 2011-4-26 13:13:16 | 显示全部楼层

RE: 搞得太复杂!

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

  1. ;;;显示日期、星期几
  2. ;;;zml84 修改后
  3. (defun c:TE (/ tmp y m d lst)
  4.   (setq        tmp (rtos (getvar "cdate") 2 0)
  5.         y   (substr tmp 1 4)
  6.         m   (substr tmp 5 2)
  7.         d   (substr tmp 7 2)
  8.   )
  9.   (setq        tmp (fix (getvar "date"))
  10.         tmp  (rem (1+  tmp )7)
  11.         lst '("日" "一" "二" "三" "四" "五" "六")
  12.         tmp (nth tmp lst)
  13.   )
  14.   (ALERT (STRCAT (strcat "今天是:  " y "年" m "月" d "日")
  15.                  "\n\t星期"
  16.                  tmp
  17.                  "\n\n期待一个好日子,"
  18.                  "\n继续埋首工作里,"
  19.                  "\n期待着下一个假期"
  20.          )
  21.   )
  22. )

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-20 07:58 , Processed in 0.177470 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表