又有一个问题
VisualLisp中的时间是怎样记录的我读取AutoCAD的DATE这个系统变量的时候,出现一窜奇怪的数字,这是怎么一回事
返回值的小数部分表示时间,如下得到当前时间
(defun c:gettime(/ stime h m s)(setq stime (getvar"date"))
(setq stime (* 86400.0 (- stime (fix stime))))
(setq h (fix (/ stime 3600)))
(setq m (fix (/ (- stime (* h 3600)) 60)))
(setq s (fix (- stime (* m 60) (* h 3600))))
(princ (strcat "现在时间为:" (rtos h) ":" (rtos m) ":" (rtos s)))
(princ)
)
能得到日期吗
(DEFUN setDATE ()
(DEFUN setDATE ()(SETQ TXT1 (rtos (GETVAR "CDATE")))
(SETQ TXT1 (SUBSTR TXT1 1 8))
(SETQ #T1(SUBSTR TXT1 1 4)
#T2(SUBSTR TXT1 5 2)
#T3(SUBSTR TXT1 7 2)
TXT1 (STRCAT "---------" #T1 "年-"
#T2 "月-" #T3 "日"
"---------"
)
)
(setq #t1 nil
#t2 nil
#t3 nil
)
(setq txt1 nil)
)
这个参数返回的是儒略日,具体我也没弄很清楚。下面是我从一个MATLAB转换过来的。用
这个参数返回的是儒略日,具体我也没弄很清楚。下面是我从一个MATLAB转换过来的。用前生的可能比较方便些(defun ju(j / BC j0 dd n1 n2 n3 year0 year month day round ceil)(defun round(num1 / b)
(setq b (fix num1))
(if (> (- num1 b) 0.5)
(setq b (1+ b))
b)
)
(defun ceil(num / b)
(setq b (fix num))
(1+ b)
)
(if (< j 1721423.5)
(setq BC 1)
(setq BC 0)
)
(if (< j 2299160.5)
(progn
(setq j0 (fix (+ j 0.5)))
(setq dd (- (+ j 0.5) j0))
)
(progn
(setq n1 (+ (fix (/ (- j 2342031.5) 36524.25 4)) 1));%1700.3.1.0
(setq n2 (+ (fix (/ (- j 2378555.5) 36524.25 4)) 1)); %1800.3.1.0
(setq n3 (+ (fix (/ (- j 2415079.5) 36524.25 4)) 1));%1900.3.1.0
(setq j0 (+ n1 n2 n3 j 10))
(setq dd (- (+ j0 0.5) (fix (+ j0 0.5))))
(setq j0 (fix (+ j0 0.5)))
)
)
(setq j0 (+ j0 32083))
(setq year0 (ceil (- (/ j0 365.25) 1)))
(setq year (- year0 4800))
(setq day (- j0 (fix (* year0 365.25))))
(setq month (+ (fix (/ (- day 0.6) 30.6)) 3))
(setq day (- day (round (* (- month 3) 30.6))))
(if (> month 12)
(progn
(setq month (- month 12))
(setq year (1+ year))
)
)
(setq year (- year BC))
(princ "今天是:")
(princ year)
(princ "年")
(princ month)
(princ "月")
(princ day)
(princ "日")
(princ)
)
谢谢大家,我的问题已经解决了,下午把论文交了就可以好好的睡上一觉了
我飞兄,你的程序我好象有点看不懂
30.6,365.23我基本上还能猜得出是什么,但是36524.25,32083之类的我实在不明白是什么我也说了没怎么弄懂,是MATLAB程序直接转换过来的。你到网上查查儒略日吧,
如果在VBA中,则很简单
Sub dd()Debug.Print ThisDrawing.GetVariable("date")
Debug.Print ConvertJulianDate(ThisDrawing.GetVariable("DATE"))
End Sub
Public Function ConvertJulianDate(julianDate As Double) As Date
ConvertJulianDate = julianDate - 2415019
End Function
here
参考一下ExpressTools中的julian.lsp,很有帮助的当然简单一点的可以用DODLib中的相关函数
页:
[1]
2