在autolisp中,我找到了两种调用日期CDate和Date的方法。但是我需要获得UTC日期时间。我一直在搜索它的功能,但找不到任何功能。
我的参考: php pdo documentation
有没有办法获得UTC日期时间?是否可以手动减去/添加当前时间?
非常感谢你!
答案 0 :(得分:0)
您可以使用vlax-create-object来调用PowerShell来执行:(Get-Date).ToUniversalTime()
答案 1 :(得分:0)
您可以使用以下功能从NIST Internet时间服务器检索UTC日期时间:
;; Internet Time - Lee Mac
;; Returns the date and/or UTC time as a string in the format specified.
;; Data is sourced from a NIST Internet Time Server.
;;
;; The format argument may use the following identifiers to represent date & time quantities:
;; YYYY = 4-digit year
;; YY = Year
;; MO = Month
;; DD = Day
;; HH = Hour
;; MM = Minutes
;; SS = Seconds
(defun LM:internettime ( format / result rgx server xml )
(setq server "http://time.nist.gov:13")
(setq result
(vl-catch-all-apply
(function
(lambda ( / str )
(setq xml (vlax-create-object "msxml2.xmlhttp.3.0"))
(setq rgx (vlax-create-object "vbscript.regexp"))
(vlax-invoke-method xml 'open "POST" server :vlax-false)
(vlax-invoke-method xml 'send)
(if (setq str (vlax-get-property xml 'responsetext))
(progn
(vlax-put-property rgx 'global actrue)
(vlax-put-property rgx 'ignorecase actrue)
(vlax-put-property rgx 'multiline actrue)
(setq str (strcat " " (itoa (jtoy (+ (atoi (substr str 2 5)) 2400000.5))) (substr str 7)))
(mapcar
(function
(lambda ( a b )
(vlax-put-property rgx 'pattern a)
(setq format (vlax-invoke rgx 'replace format b))
)
)
'("YYYY" "YY" "MO" "DD" "HH" "MM" "SS")
'( "$1" "$2" "$3" "$4" "$5" "$6" "$7")
)
(vlax-put-property rgx 'pattern
(strcat
"(?:[^\\d]+)([\\d]+)(?:[^\\d]+)([\\d]+)"
"(?:[^\\d]+)([\\d]+)(?:[^\\d]+)([\\d]+)"
"(?:[^\\d]+)([\\d]+)(?:[^\\d]+)([\\d]+)"
"(?:[^\\d]+)([\\d]+)(?:.+)\\n"
)
)
(vlax-invoke-method rgx 'replace str format)
)
)
)
)
)
)
(if xml (vlax-release-object xml))
(if rgx (vlax-release-object rgx))
(if (not (vl-catch-all-error-p result)) result)
)
;; Julian Date to Calendar Year
;; Algorithm from: Meeus, Jean. Astronomical Algorithms.
(defun jtoy ( j / a b c d )
(setq j (fix j)
a (fix (/ (- j 1867216.25) 36524.25))
b (+ (- (+ j 1 a) (fix (/ a 4))) 1524)
c (fix (/ (- b 122.1) 365.25))
d (fix (/ (- b (fix (* 365.25 c))) 30.6001))
)
(fix (- c (if (< 2 (fix (if (< d 14) (1- d) (- d 13)))) 4716 4715)))
)
以下是一个例子:
_$ (LM:internettime "YYYY-MO-DD HH:MM:SS")
"2018-01-07 11:34:24"