Author Topic: date manipulation..  (Read 2136 times)

0 Members and 1 Guest are viewing this topic.

Andrea

  • Water Moccasin
  • Posts: 2372
date manipulation..
« on: October 18, 2006, 10:52:34 AM »
Hi all..

I'm trying to found a way to remove 1 day of a specific date.
Code: [Select]
( - (setq TIME#1 "5/10/2006") oneday)
How can i do that without to handy manipulation..?

also...i'm trying to understand this...
Code: [Select]
(rtos(- (getvar "DATE") 1) 2);; = "2454026.4482" ??
we are currently October 18 2006. and the DATE variable is "2454027.4527"

PLease show me the way.. :angel:

Keep smile...

Jeff_M

  • King Gator
  • Posts: 4094
  • C3D user & customizer
Re: date manipulation..
« Reply #1 on: October 18, 2006, 12:21:05 PM »
Have a look at this THREAD

Andrea

  • Water Moccasin
  • Posts: 2372
Re: date manipulation..
« Reply #2 on: October 18, 2006, 12:40:39 PM »
Hi Jeff...

I've foud this....from Bill Kramer.


Code: [Select]
  (defun AstroCalendar (JD / II F A B C D E G TT DD MM YY)
  (setq II (fix (+ JD 0.5))
F (- JD II))
  (if (> II 2299160.0)
    (setq A (fix (/ (- II 1867216.25) 35624.25))
  B (+ II 1  A (fix (/ A -4.0)))
  )
    (setq B II)
    )
  (setq C (+ B 1524.0)
D (fix (/ (- C 122.1) 365.25))
E (fix (* D 365.25))
G (fix (/ (- C E) 30.6001))
TT (+ C (- E) F (fix (* G -30.6001)))
DD (fix (+ TT 0.5))
)
  (if (< G 13.5)
    (setq MM (1- (fix G)))
    (setq MM (- (fix G) 13))
    )
  (if (> MM 2)
    (setq YY (- (fix D) 4716))
    (setq YY (- (fix D) 4715)))
  (strcat (itoa MM) "/" (itoa DD) "/" (itoa YY))
  )

and modified for my own...

   
Code: [Select]
  (defun AstroCalendar (/ II F A B C D E G TT DD MM YY JD)
    (setq JD (getvar "DATE")) ;;automatcly get the DATE variable
  (setq II (fix (+ JD 0.5))
F (- JD II))
  (if (> II 2299160.0)
    (setq A (fix (/ (- II 1867216.25) 35624.25))
  B (+ II -1 A (fix (/ A -4.0))) ;;;;;replace 1 by -1
  )
    (setq B II)
    )
  (setq C (+ B 1524.0)
D (fix (/ (- C 122.1) 365.25))
E (fix (* D 365.25))
G (fix (/ (- C E) 30.6001))
TT (+ C (- E) F (fix (* G -30.6001)))
DD (fix (+ TT 0.5))
)
  (if (< G 13.5)
    (setq MM (1- (fix G)))
    (setq MM (- (fix G) 13))
    )
  (if (> MM 2)
    (setq YY (- (fix D) 4716))
    (setq YY (- (fix D) 4715)))
  (strcat (itoa MM) "/" (itoa DD) "/" (itoa YY))
  )

thanks.
« Last Edit: October 18, 2006, 12:42:46 PM by Andrea »
Keep smile...

Andrea

  • Water Moccasin
  • Posts: 2372
Re: date manipulation..
« Reply #3 on: October 18, 2006, 12:54:45 PM »
oops...Jeff...

your right..

Code: [Select]
(load "julian")
(setq cdate (getvar "date"))
(princ "\nStart date: ")
(princ (jtoc cdate))
(setq futuredate (+ cdate 30))
(princ "\nEnding date: ")
(princ (jtoc futuredate))

thank you..
Keep smile...

GDF

  • Water Moccasin
  • Posts: 2081
Re: date manipulation..
« Reply #4 on: October 18, 2006, 02:20:01 PM »
Here is some more...

Code: [Select]
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ARCH:C_DATE Function ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;   Algorithms are from collection from Communications of the ACM
;;;   Original AutoLISP from AutoDesk examples on Compuserve
(defun ARCH:C_DATE  (j / y d m)
  (setq j (fix j)
        j (- j 1721119.0)
        y (fix (/ (1- (* 4 j)) 146097.0))
        j (- (* j 4.0) 1.0 (* 146097.0 y))
        d (fix (/ j 4.0))
        j (fix (/ (+ (* 4.0 d) 3.0) 1461.0))
        d (- (+ (* 4.0 d) 3.0) (* 1461.0 j))
        d (fix (/ (+ d 4.0) 4.0))
        m (fix (/ (- (* 5.0 d) 3) 153.0))
        d (- (* 5.0 d) 3.0 (* 153.0 m))
        d (fix (/ (+ d 5.0) 5.0))
        y (+ (* 100.0 y) j))
  (if (< m 10.0)
    (setq m (+ m 3))
    (setq m (- m 9)
          y (1+ y)))
  (strcat (nth (1- (fix m))
               (list "01" "02" "03" "04" "05" "06" "07" "08" "09" "10" "11" "12"))
          "/"
          (if (< D 10)
            "0"
            "")
          (itoa (fix D))
          "/"
          (substr (itoa (fix Y)) 3 2)))
;;;
(defun ARCH:C_DATE-ISSUE  (j / y d m)
  (setq j (fix j)
        j (- j 1721119.0)
        y (fix (/ (1- (* 4 j)) 146097.0))
        j (- (* j 4.0) 1.0 (* 146097.0 y))
        d (fix (/ j 4.0))
        j (fix (/ (+ (* 4.0 d) 3.0) 1461.0))
        d (- (+ (* 4.0 d) 3.0) (* 1461.0 j))
        d (fix (/ (+ d 4.0) 4.0))
        m (fix (/ (- (* 5.0 d) 3) 153.0))
        d (- (* 5.0 d) 3.0 (* 153.0 m))
        d (fix (/ (+ d 5.0) 5.0))
        y (+ (* 100.0 y) j))
  (if (< m 10.0)
    (setq m (+ m 3))
    (setq m (- m 9)
          y (1+ y)))
  (strcat (if (< D 10)
            "0"
            "")
          (itoa (fix D))
          " "
          (nth (1- (fix m))
               (list "Jan" "Feb" "March" "April" "May" "June" "July" "Aug" "Sept" "Oct" "Nov"
                     "Dec"))
          " "
          (substr (itoa (fix Y)) 1 4)
          ;;3 2)
          ))
;;;;;;;;;;;;;;;;;;;;;;;;;;;; ARCH:DATE_CREATED Function ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun ARCH:DATE_CREATED  ()
  (prompt (strcat "\***   This Drawing Created on : "
                  (ARCH:C_DATE (getvar "TDUCREATE"))
                  "   ***"))
  (princ))
;;;
(defun ARCH:TDCREATE  (/ date)
  (setq date
         (menucmd
           (strcat
             "M=$(edtime,$(getvar,tdcreate),MON\" \"DD\" \"YYYY  HH\":\"MM\":\"SSam/pm)")))
  (princ (strcat "\n*** Date Created : " date " ***"))
  (princ))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq ARCH#YEAR (substr (rtos (getvar "CDATE") 2 16) 1 4))
(setq ARCH#DATE (ARCH:C_DATE-ISSUE (getvar "tdupdate")))
;;(setq ARCH#DATE (ARCH:C_DATE (getvar "tdupdate"))) ;old version

(defun ARCH:DATE  (/ DATST MON DAY YEAR HRS)
    (setq DATST (rtos (getvar "CDATE") 2 16)
          MON   (substr DATST 5 2)
          DAY   (substr DATST 7 2)
          YEAR  (substr DATST 1 4)
          HRS   (atoi (substr DATST 10 2)))
    (cond ((= MON "01") (setq MON2 "January"))
          ((= MON "02") (setq MON2 "Feburary"))
          ((= MON "03") (setq MON2 "March"))
          ((= MON "04") (setq MON2 "April"))
          ((= MON "05") (setq MON2 "May"))
          ((= MON "06") (setq MON2 "June"))
          ((= MON "07") (setq MON2 "July"))
          ((= MON "08") (setq MON2 "August"))
          ((= MON "09") (setq MON2 "September"))
          ((= MON "10") (setq MON2 "October"))
          ((= MON "11") (setq MON2 "November"))
          ((= MON "12") (setq MON2 "December")))
    (cond ((= HRS 00) (setq NHRS (itoa (+ HRS 12))) (setq XTR "a.m."))
          ((< HRS 12) (setq NHRS (itoa HRS)) (setq XTR "a.m."))
          ((= HRS 12) (setq NHRS (itoa HRS)) (setq XTR "p.m."))
          ((> HRS 12) (setq NHRS (itoa (- HRS 12))) (setq XTR "p.m.")))
    (setq DATE-STRING
           (strcat MON2 " " DAY ", " YEAR " " NHRS ":" (substr DATST 12 2) " " XTR))

;;;
(menucmd "M=$(edtime,$(getvar,date),MO/DD/YYYY  HH:MM\t)

Gary
Why is there never enough time to do it right, but always enough time to do it over?
BricsCAD 2020x64 Windows 10x64