| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: Datumzahl gezählt ab 01.01.1900 wie in Excel? (672 / mal gelesen)
|
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 30. Jun. 2016 15:32 <-- editieren / zitieren --> Unities abgeben:
Hallo, weiß einer von Euch, ob es eine Funktion, Trick oder sonst etwas gibt, wie ich aus einem Datum eine INTEGER-Zahl erzeugen kann, die mir die Anzahl der Tage ab 01.01.1900 wiedergibt? (getvar "DATE" / "CDATE") haben mich nicht so richtig weiter gebracht. Hintergrund: es soll ein Datum mit Excel abgeglichen werden, und bei einem Exceldatum ist es diese Zahl, die hinter der Datumsformatierung steht. Beispiel: 01.01.1900 1 02.01.1900 2 01.01.1950 18264 29.06.2016 42550 30.06.2016 42551 ... Bin dankbar für jeden Tipp
------------------ viele Grüße Jörn http://www.bosse-engineering.com Liniensignaturen Youtube Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jupa Ehrenmitglied V.I.P. h.c. Ruheständler
Beiträge: 6052 Registriert: 16.09.2004 WINDOWS Vista Ultimate SP2 (64bit), NVIDIA Geforce 9600M GT, AutoCAD 2013.
|
erstellt am: 30. Jun. 2016 15:49 <-- editieren / zitieren --> Unities abgeben: Nur für joern bosse
Bei den ExpressTools ist ein Befehl CtoJ dabei, mit dem Du den 1.1.1900 in ein Julianisches Datum umwandeln kannst. Diesen Wert von DATE subtrahieren ... (ungetestet) Etwa so: (1+ (- (fix(getvar "date")) (ctoj 1900 1 1 0 0 0))) (+ 2 (- (fix(getvar "date")) (ctoj 1900 1 1 0 0 0))) oder - wenn's um ein beliebiges Datum geht den Minuenden entsprechend anpassen (anstelle von DATE auch mit (ctoj ...) ). Ich weiß ja nicht, in welcher Form / in welchem Format das jeweilige Datum vorliegt.
Jürgen
------------------ Bildung kommt nicht vom Lesen, sondern vom Nachdenken über das Gelesene. (Carl Hilty) [Diese Nachricht wurde von jupa am 30. Jun. 2016 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 30. Jun. 2016 18:00 <-- editieren / zitieren --> Unities abgeben:
Hallo Jürgen, Volltreffer, versenkt, 10 U's für Dich! Die Funktion ist in der Datei "julian.lsp" von den Express-Tools. Ich habe das Dein Konstrukt noch ein wenig angepasst und erhalte für die heutige Zeit korrekte Ergebnisse (01.01.1900 ist ein Tag zu wenig gegenüber Excel, aber ich glaube da gab es mal eine Korrektur in Tagezählung seit damals, habe Wikepedia aber nur überflogen) Code:
(defun ctoj (yr m d hh mm ss / y a b) (setq y yr) (if (<= m 2) (setq y (1- y) m (+ m 12) ) ) (if (or (< yr 1582) (and (= yr 1582) (or (< m 10) (and (= m 10) (< d 5))))) (setq b 0) ; Julian calendar (setq a (fix (/ y 100)) ; Gregorian calendar b (+ (- 2 a) (fix (/ a 4))) ) ) (+ (fix (+ (* 365.25 (+ y 4716)) (fix (* 30.6001 (+ m 1))))) d b -1524.0 (/ (+ (* (+ (* hh 60) mm) 60) ss) (* 24.0 60 60))) )(defun c:test ( / CONST DATELIST X) (setq const 2415019 dateList '( (1900 1 1) (1900 1 2) (1950 1 1) (1955 1 1) (1960 1 1) (2016 6 29) (2000 6 30) (2022 8 8))) (mapcar 'princ (mapcar '(lambda(X) (strcat "\n" (rtos (-(ctoj (car X) (cadr X) (caddr X) 0 0 0) const) 2 0))) dateList)) (princ))
Rückgabe: 2 3 18264 20090 21916 42550 36707 44781 ------------------ viele Grüße Jörn http://www.bosse-engineering.com Liniensignaturen Youtube Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Peter2 Ehrenmitglied V.I.P. h.c.
Beiträge: 3849 Registriert: 15.10.2003
|
erstellt am: 30. Jun. 2016 22:21 <-- editieren / zitieren --> Unities abgeben: Nur für joern bosse
|
Meldin Mitglied
Beiträge: 398 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 01. Jul. 2016 09:05 <-- editieren / zitieren --> Unities abgeben: Nur für joern bosse
Hallo, du kannst dir auch den Wert (in)direkt aus excel holen. Code: (setq ExcelApp (vlax-get-or-create-object "Excel.Application")) (setq ExcelCells (vlax-get-property (vlax-get-property (vlax-invoke-method (vlax-get-property ExcelApp "WorkBooks") 'add ) "ACTIVESHEET" ) "CELLS" ) ) (vlax-put-property ExcelCells "item" 1 1 "01.01.1902") (vlax-put-property ExcelCells"NumberFormat" "@") (setq ZellenInhalt(vlax-variant-value (vlax-get-property(vlax-get-property ExcelCells 'Range "A1:A1" )"Text"))) (vlax-release-object ExcelApp) (vlax-release-object ExcelCells)
------------------ Gruß Wolfgang Alias: Rabbit007 und Wolli1 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 01. Jul. 2016 09:30 <-- editieren / zitieren --> Unities abgeben:
|
Meldin Mitglied
Beiträge: 398 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 01. Jul. 2016 11:45 <-- editieren / zitieren --> Unities abgeben: Nur für joern bosse
|
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 01. Jul. 2016 11:57 <-- editieren / zitieren --> Unities abgeben:
Hallo Wolfgang, ich lege von AutoCAD aus ein Ablaufdatum für eine Exceldatei fest. Das Datum wird an eine vereinbarte Stelle in die Registry geschrieben, und zwar als eben dieser Zahlenwert (damit es nicht so ganz offensichtlich ist ;-) Wenn die Exceldatei gestartet wird, dann liest ein Excel-Macro eben diesen Wert aus und prüft anhand des Wertes, ab das Ablaufdatum bereits überschritten ist. ------------------ viele Grüße Jörn http://www.bosse-engineering.com Liniensignaturen Youtube Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |