Archiv des Intrexx Live! Forums

Hier sehen Sie die Foreneinträge aus dem Intrexx Live! Forum. Bis November 2016 war es das Forum für alle Fragen rund um die Software Intrexx von United Planet.
Seit November 2016 gibt es ein neues moderiertes Forum, das Intrexx Community Forum. Nutzen Sie bitte unbedingt dieses für aktuelle Fragen, Antworten und Informationen.

Wichtig: Dieses Forum dient als Archiv. Die Einträge beziehen sich oft auf ältere Versionen von Intrexx und entsprechen nicht mehr den aktuellen technischen Gegebenheiten.
Daher sollten alle Inhalte ausschließlich von Experten genutzt werden. Bei unsachgemäßer Anwendung kann es zu zeitaufwändigen Problemen oder Datenverlust kommen.
Übersicht > Intrexx Professional: Programming > velocity CalendarAwareDate

velocity CalendarAwareDate

Ich habe mal wieder ein mir unerklärliches Problem!
1. Ich ermittle das aktuelle Datum mit ...#set($aktDate = $DtUtil.now($User.getTimeZone())) .. ..kein Problem
2. Ich ermittle ein Datum eines Datensatzes mit einer Select Anweisung..
3. Anzeige der Datumswerte ergibt zB 2016-09-02 08:00 und 2016-09-02 09:00

4. Vergleich mit #if( $date1 > $date2) bringt immer false egal welche Datumswerte drin stehen, selbst wenn $date1 größer ist als $date2

Da habe ich mir gedacht ich vergleiche "händisch" welches Datum größer ist indem ich die GesamtSekunden errechne. Dabei ermittle ich die Bestandteile jedes dieser Daten mit $date1.getFullYear() etc. und multipliziere jeweils mit den sekunden! Das geht für das nach Pkt 1. ermittelte aktuelle Datum problemlos! Für das lt. 2. ermittelte Datum geht das für alles außer für Jahr und Tag.. Der Script wurde kopiert so das im Grunde kein Syntaxfehler auftreten kann.




ablauf = $ablDate
$aktDate.setSeconds(0)
$aktDate.setMilliseconds(0)


aktDate= $aktDate
##aktuelles Datum
#set($aktJahr = $aktDate.getFullYear()) ergibt 2016!!
#set($aktMonat = $aktDate.getMonth() + 1)
ergibt 9
#set($aktTage = $aktDate.getDayOfMonth())
#set($aktStunde = $aktDate.getHours())
#set($aktMinute = $aktDate.getMinutes())


aktjahr = $aktJahr
aktMonat=$aktMonat
aktTag = $aktTage
aktStunde = $aktStunde
aktMinute = $aktMinute



#set($aktsec = $aktMinute * 60 + $aktStunde * 3600 +$aktTage *86400 + $aktJahr * 31536000 )
aktsec=$aktsec

##Ablaufdatum
#set($ablJahr = $ablDate.getFullYear()) ergibt $ablJahr!!
#set($ablMonat = $ablDate.getMonth() + 1) ergibt 9
#set($ablTage = $ablDate.getDayOfMonth())
#set($ablStunde = $ablDate.getHours())
#set($ablMinute = $ablDate.getMinutes())

hat da jemand ne Idee ??? es sieht irgendwie so aus als wäre $ablDate kein exaktes Datumsformat , dagegen spricht jedoch das $ablMonat richtig ermittelt wird!

Danke
02.09.2016 08:27 von Ulrikus
Also wenn es sich um CalendarAwareDate handelt hat dieses auch eine Methode "compareTo" http://docs.oracle.com/javase/8/docs/api/java/sql/Timestamp.html?is-external=true#compareTo-java.sql.Timestamp-

Ein Vergleich könnte bspw. so aussehen


#set($diff = $date1.compareTo($date2))
#if($diff==0) ##$date1==$date2
#elseif($diff < 0) ## $date1 < $date2
#elseif($diff > 0) ## $date1 > $date2
#end

02.09.2016 08:46 von MartinW
Hallo und Danke ja so gehts und ich hatte vermutet mit #if( $date1 < $date2) .... gehts auch . Verstehe zwar nicht wirklich warum das nicht geht aber mit der Compare Mehthode klappt es super! DANKE!!!!! Schönes Wochenende!
02.09.2016 09:15 von Ulrikus
Bei objekt orientierten Sprachen gibt es das häufiger, dass direkte Vergleiche nicht funktionieren, da dann oft die Refrenz des Objekts bzw. die Adresse des Objekts im Speicher als Vergleichswert genommen wird.
Dafür hat man eben solche compare-Methoden entwickelt.
02.09.2016 11:15 von MartinW
Bin Quereinsteiger (Eintrittswinkel zwischen +45grd und -45grd!!) da fehlts mir leider an Grundlagen! Ich werde wohl mal ne Volkshochschulschnellbesohlungslehrgang machen müssen!!
06.09.2016 09:12 von Ulrikus
Zurück | Alles über Intrexx | Impressum | Datenschutzerklärung

Über United Planet
© 2019 United Planet GmbH
Schnewlinstraße 2
79098 Freiburg