2017-03-27 150 views
0

在autolisp中,我找到了兩種調用日期CDate和Date的方法。但是我需要獲取UTC日期時間。我一直在尋找它的功能,但無法找到任何。AutoLisp - 獲取UTC日期時間

MY裁判: https://knowledge.autodesk.com/support/autocad/learn-explore/caas/CloudHelp/cloudhelp/2016/ENU/AutoCAD-Core/files/GUID-CBB24068-1654-4753-BE2E-1D0CE9700411-htm.html

有沒有辦法讓UTC日期時間?是否可以手動減去/添加當前時間?

非常感謝!

回答

0

你可以使用明經創建對象調用PowerShell來執行:(獲取最新).ToUniversalTime()

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"