lsp如何获取前三天的日期
如题 lsp如何获取前三天的日期假如今天是:2022/09/01
三天前的日期为:2022/08/29
则返回20220829
具体的日期格式转换是怎么操作的
请大佬指点指点
本帖最后由 baitang36 于 2022-9-9 22:41 编辑
可以用保留函数来实现
(load "c:/00/trf_9.fas")
(tranf "ymd->fix")
(tranf "fix->ymd")
(setq aa (ymd->fix 2022 9 1))
(setq aa (- aa 3))
(fix->ymd aa)
返回的是表(2022 8 29)
baitang36 发表于 2022-9-9 22:36
可以用保留函数来实现
(load "c:/00/trf_9.fas")
大佬你好 我测试发现这俩函数计算时是按每个月31天来算的
比如
(setq aa (ymd->fix 2022 7 1))
(setq aa (- aa 3))
(fix->ymd aa)
返回(2022 6 29)
(setq aa (- aa 1))
(fix->ymd aa)
返回(2022 6 31) 飞雪神光 发表于 2022-9-10 00:05
大佬你好 我测试发现这俩函数计算时是按每个月31天来算的
比如
(setq aa (ymd->fix 2022 7 1))
试了一下确实如此,每个月按31天计算的 baitang36 发表于 2022-9-9 22:36
可以用保留函数来实现
(load "c:/00/trf_9.fas")
大佬,试了一下确实如此,每个月按31天计算的 本帖最后由 crtrccrt 于 2022-9-18 17:55 编辑
儒略日,与年月日,互转,
准确天误,自行百度。
支持好几千年内日期。 实在不行,做个真实的日历TXT,放进LISP就行了。用最直接,最粗暴方法。 飞的鱼儿 发表于 2022-9-16 16:50
实在不行,做个真实的日历TXT,放进LISP就行了。用最直接,最粗暴方法。
有点麻烦,用vba倒是可以,但高版本CAD要单独安装VBA模块又太麻烦 本帖最后由 highflybird 于 2022-9-18 08:36 编辑
这个问题可以用脚本语言来。
如:(vlax-invoke scr 'run "MyDateAdd" "d" -3 "2022/9/18")
或者:(vlax-invoke scr 'eval "FormatDateTime(DateAdd(\"d\",-3,date))")
下面是几个与日期相关函数的获取:
;;;Ref https://www.w3school.com.cn/vbscript/vbscript_ref_functions.asp
;;;常用日期时间相关函数
(defun c:getDate (/ scr date now)
(or
(setq SCR (vlax-create-object "Aec32BitAppServer.AecScriptControl.1"))
(setq SCR (vlax-create-object "ScriptControl"))
)
(if scr
(progn
(vlax-put scr 'language "VBScript")
(vlax-invoke scr 'addcode
"Function MyDate
Mydate = Date
End Function
Function MyNow
MyNow = Now
End Function
Function MyFormatDateTime(nDate)
MyFormatDateTime = FormatDateTime(nDate)
End Function
Function MyDateAdd(interval,number,sdate)
MyDateAdd = FormatDateTime(DateAdd(interval,number,sdate))
End Function
Function MyDateValue(sdate)
MyDateValue = DateValue(sdate)
End Function
Function MyDateDiff(interval,date1,date2)
MyDateDiff = DateDiff(interval,date1,date2)
End Function"
)
(setq date (vlax-invoke scr 'run "MyDate"));当前系统日期
(setq now (vlax-invoke scr 'run "MyNow"));当前系统时间
(vlax-invoke scr 'run "MyFormatDateTime" now);格式化日期
(vlax-invoke scr 'run "MyDateAdd" "d" -3 date);三天前日期
(vlax-invoke scr 'run "MyDateValue" "2022-Jan-02");日期转数值
(vlax-invoke scr 'run "MyDateDiff" "d" "1949/10/1" now);两个日期之间的时间间隔数
(vlax-release-object scr)
(princ)
)
)
)
highflybird 发表于 2022-9-18 08:20
这个问题可以用脚本语言来。
如:(vlax-invoke scr 'run "MyDateAdd" "d" -3 "2022/9/18")
或者:(vlax-i ...
感谢大佬解惑
页:
[1]
2