0
在autolisp中,我找到了兩種調用日期CDate和Date的方法。但是我需要獲取UTC日期時間。我一直在尋找它的功能,但無法找到任何。AutoLisp - 獲取UTC日期時間
有沒有辦法讓UTC日期時間?是否可以手動減去/添加當前時間?
非常感謝!
在autolisp中,我找到了兩種調用日期CDate和Date的方法。但是我需要獲取UTC日期時間。我一直在尋找它的功能,但無法找到任何。AutoLisp - 獲取UTC日期時間
有沒有辦法讓UTC日期時間?是否可以手動減去/添加當前時間?
非常感謝!
你可以使用明經創建對象調用PowerShell來執行:(獲取最新).ToUniversalTime()
您可以使用下面的函數獲取從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"