25.01.2008, 11:24
Beitrag #1
|
LabieQuintus
LVF-Grünschnabel
Beiträge: 12
Registriert seit: Dec 2005
LabView 8.5
2006
de
69168
Deutschland
|
TimeStamp
hi,
ich hab folgendes Problem:
ich hab ein 2D String Array. In der ersten ersten Spalte steht ein Zeitstempel im String format, dahinter stehen noch andere Informationen.
Ich möchte das Array nach diesem Datum sortieren, dafür will ich den DateTime String in einen Zeitstempel und danach in eine Gleitkomma Zahl
convertieren damit ich über die Wertigkeit der conv. Zahl richtig sortieren kann. Leider bekomme ich keine vollständige Gleitkommazahl, sondern
einen Wert der wie folgt aussieht: 3,27938E+9 und wenn ich diesen wieder zurück convertiere bekomm ich ein falsches Datum.
Im grunde will ich nur wissen wie ich den Zeitstempel String ins Datumsformat und dannach in ne vollständige Gleitkommazahl convertiere und anschliessend
wieder zurück zu nem String Zeitstempel.
Bitte helft mir.
ciaole
Quintus
P.S benutze LabVIEW8.5
Die Starken Taten was sie konnten, die Schwachen litten was Sie mussten.
|
|
|
25.01.2008, 12:07
Beitrag #2
|
toaran_
LVF-Gelegenheitsschreiber
Beiträge: 237
Registriert seit: Feb 2007
2012
2006
EN
90763
Deutschland
|
TimeStamp
hi
also zur umwandlung siehe bild 1
du musst den format string noch an dein datums format anpassen ...
in meinem beispiel issses YYYY-MM-DD und die zeit einfach dahinter im format HH:MM S
bild1:
zum sortieren einfach erst das datum umwandeln wie oben beschrieben .. dann als erstes element als cluster bundeln .. als zweites element eine Zeile aus dem 2D arraydas ganze in einer for schleife ... nach der schleife einfach mit "Sort 1D Array" das ganze sortieren ... danach eine zweite for scheife in der du mittels unbundel die array zeile wieder von der timestamp trennst und am ende wieder ein 2D Array erhgälst welches dann sortiert ist ... siehe bild .....
ich das hilft dir ...
Toaran
|
|
|
25.01.2008, 12:09
Beitrag #3
|
|
|
25.01.2008, 12:35
Beitrag #4
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
TimeStamp
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
25.01.2008, 15:24
(Dieser Beitrag wurde zuletzt bearbeitet: 25.01.2008 18:11 von Lucki.)
Beitrag #5
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
TimeStamp
Zeitstring zu Zeitstempel (Den Formatstring mußt Du selbst anpassen, und die ms bei der Zeitstempel-Anzeige lassen sich unterdrücken):
Zeitstempel zu Double und zurück (mit kleinem Fehler, ein Tag hat 86400s und nicht 84600s)
Aber es geht auch beliebig viel umständlicher, wenn man die Funktionen die LV dafür bietet verschmäht...
@Achim "z.B double": Meines Wissen nach kann man einen Zeitstempel nur zu double konvertieren (oder vielleicht auch zu extented ?) , aber nicht zu anderen Zahlenformaten.
|
|
|
26.01.2008, 08:30
(Dieser Beitrag wurde zuletzt bearbeitet: 26.01.2008 09:05 von Lucki.)
Beitrag #7
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
TimeStamp
' schrieb:Nun single geht auch aber dann verlierst Du sehr viel Genauigkeit. Die Auflösung ist dann für einen aktuellen Zeitstempel weit grösser als einen Sekunde. unsigned int32 geht auch, dann hast Du natürlich keine fraktionellen Sekunden und der unsigned int32 läuft irgendwann mal in 2038 oder so über.
Das ist 1x richtig und 1x falsch. Allerdings kann man mit doppelter Konvertierung (s. Beispiel links unten) einen Zeitstempel zu jedem Zahlenformat hin vergewaltigen.
Das ist aber alles eine eher praxisferne Diskussion (- die ich zugegebenermaßen angestoßen habe -), denn die interne Darstellung eines Zeitstempels ist double, und ich sehe keinen vernünftigen Grund, einen Zeitstempel in ein anderes als dies Format zu konvertieren.
In vielen Fällen ist eine Konvertierung sogar überflüssig, man kann den Zeitstring so verwenden, als sei das Format DBL. Um zarte Gemüter nicht zu verwirren, habe ich in dem Beitrag weiter oben Konvertierungen verwendet, die eigentlich gar nicht nötig sind. So funktioniert es auch:
Man beachte, daß am Additionssymbol nicht einmal Konvertierungspunkte vorhanden sind! Der Zeitstempel verhält sich (hier, aber noch immer,) exakt wie das Format DBL.
|
|
|
28.01.2008, 08:51
(Dieser Beitrag wurde zuletzt bearbeitet: 28.01.2008 09:00 von rolfk.)
Beitrag #8
|
rolfk
LVF-Guru
Beiträge: 2.306
Registriert seit: Jun 2007
alle seit 6.0
1992
EN
2901GG
Niederlande
|
TimeStamp
' schrieb:Das ist 1x richtig und 1x falsch. Allerdings kann man mit doppelter Konvertierung (s. Beispiel links unten) einen Zeitstempel zu jedem Zahlenformat hin vergewaltigen.
[attachment=37890:Zeitstem...rtierung.png]
Was ist denn da 1x falsch? Stimmt Du kannst es nicht direkt konvertieren, aber davon war auch nie die Rede.
Zitat:Das ist aber alles eine eher praxisferne Diskussion (- die ich zugegebenermaßen angestoßen habe -), denn die interne Darstellung eines Zeitstempels ist double, und ich sehe keinen vernünftigen Grund, einen Zeitstempel in ein anderes als dies Format zu konvertieren.
In vielen Fällen ist eine Konvertierung sogar überflüssig, man kann den Zeitstring so verwenden, als sei das Format DBL. Um zarte Gemüter nicht zu verwirren, habe ich in dem Beitrag weiter oben Konvertierungen verwendet, die eigentlich gar nicht nötig sind. So funktioniert es auch:
[attachment=37891:Zeit_Tage.png]
Man beachte, daß am Additionssymbol nicht einmal Konvertierungspunkte vorhanden sind! Der Zeitstempel verhält sich (hier, aber noch immer,) exakt wie das Format DBL.
Nein, die interne Darstellung eines Zeitstempels in LabVIEW war ein Double in Version < 7.0 (und ein vorzeichenloser 32 Bit Integer vor 4.0 oder so). Seit 7.0 ist es ein fixed floating Point Value, mit einem 64 Bit vorzeichenbehaftetem Integer für die Sekunden und einem 64 Bit vorzeichenlosen Integer für die Sekundenbruchteile. Allerdings wurden vor 8.0 nur die ersten 32 Bit des Sekundenbruchteils verwendet!
Wer das ja möchte kann mal berechenen was für ein Zeitraum damit abgedeckt werden kann. Nur soviel, das ist mehr dann die moderne Physik dem Universum zutraut, sowohl im Makro als im Mikrobereich.
Und zu Deinem letzten Beispiel: Versuch das nicht mit zwei Zeitstempeln!
LabVIEW ist da sehr intelligent. Ein Zeitstempel ist ein absoluter Zeitpunkt, eine Double Zahl wird im Falle von Zeit als relative Zeit behandelt.
absolut + absolut => Fehler
absolut +/- relativ => geht, Zeitstempel, absolutes Zeit
absolut - absolut => geht, Double, relative Zeit
Multiplikation/Division geht nicht mit Zeitstempeln. Was ist das doppelte vom heutigen Tag?
Da hat jemand ziemlich gut nachgedacht!
Rolf Kalbermatter
|
|
|
09.03.2016, 08:06
Beitrag #9
|
TDO
LVF-Gelegenheitsschreiber
Beiträge: 125
Registriert seit: Oct 2013
2016
2009
DE
Deutschland
|
RE: TimeStamp
Hallo,
ich möchte das Thema nochmal kurz aufgreifen.
Ich habe ebenfalls ein 2D-Array of String.
In der zweiten Spalte steht ein Datum z.B. 09.03.2016. Ich möchte die Zeilen jetzt nach diesem Datum sortieren.
Gibt es dafür auch noch eine andere Möglichkeit (evtl. einfachere), als diesen Datumsstring zunächst in eine Zahl zu konviertieren, das ganze zu sortieren und dann wieder in ein Datum umzuwandeln?
Gruß
TDO
|
|
|
09.03.2016, 08:38
(Dieser Beitrag wurde zuletzt bearbeitet: 09.03.2016 08:39 von GerdW.)
|
GerdW
______________
Beiträge: 17.480
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: TimeStamp
Hallo TDO,
wenn dein Datumsstring das Format "YYYYMMDD" hätte, könntest du dein Array auch alphabetisch sortieren lassen.
Wenn das Datumsformat dagegen "DD.MM.YYYY" lautet, musst du wohl oder übel erst einmal umwandeln: entweder durch umwandeln in eine Zahl oder durch Umsortieren der Zeichen…
|
|
|
| |