ColdFusion: Anzahl der Tage zwischen zwei Daten exakt ermitteln

ColdFusion bietet zu diesem Zweck zwar die Funktion DateDiff, welche jedoch den Nachteil hat, das sie nur vollständige Datumsteile berücksichtigt.

Somit liefert

<cfset daysBetween=DateDiff("d", date1, date2)>

folgerichtig ein potentiell falsches Ergebnis, da der aktuelle (angebrochene) Tag mehr oder weniger unterschlagen wird.

Folgender Code liefert jedoch ein genaueres Ergebnis:

<cfset hoursBetween=DateDiff("h", date1, date2)>
<cfset daysBetween=round(hoursBetween / 24))>

Die Logik dahinter ist extrem simpel: Zuerst wird die Anzahl der Stunden zwischen den zwei Daten ermittelt. Dieser Wert wird anschließend durch 24 geteilt, um die exakte Anzahl der Tage zu erhalten. Da jedoch eine Zahl mit Nachkommastellen als Ergebnis eher verwirrend sein kann, wird das Ergebnis zu Schluss auf eine ganze Zahl aufgerundet.

Einfach, kurz und effektiv 😉

Peinlich

Wer mal ein wenig zu lachen haben möchte, sollte mal seinen Windows Taschenrechner anschmeißen und folgende Rechenschritte ausführen:

  1. Wurzel aus 4 ziehen
  2. Von dem Ergebnis 2 subtrahieren

Das Ergebnis ist …. nun ja … überraschend :mrgreen:

Richtig amüsant wird es, wenn man die selben Rechenschritte ausführt, nachdem man den Taschenrechner auf „Wissenschaftlich“ umgeschaltet hat. Nur soviel: das Ergebnis wird nicht unbedingt richtiger 😉

Alles in allem doch irgendwie peinlich für Microsoft 😎

kleine Ursache, große Wirkung und lange Suche

Ich liebe solche Bugs. Nicht!

Eine fehlende Bedingung in 2 SQL Abfragen hatte zur Folge, das unter Bestimmten Bedingungen gewisse Informationen im Industrietechnik24-Portal nicht angezeigt wurden. Was den Kunden dazu veranlasst hat, uns zu beauftragen, ihm mehr Rechte zu gewähren.

An sich eine harmlose Geschichte, die auch sehr schnell gefixt war. Nur die Suche hat sich etwas in die Länge gezogen, da sich der Bug sehr gut versteckt hatte.

Der K(r)ampf mit Flyback

Gestern kam ich auf die (im Nachhinein) bescheuerte Idee, ein rpm für flyback zu erstellen. Was sich Nachhinein als komplizierter als gedacht herausstellen sollte. Entweder sind die Programmierer Anfänger oder Idioten, die noch nie etwas davon gehört haben, das Python-Skripte unter /usr/bin und Glade-Dateien1 unter /usr/share/<Programmname> abgelegt werden. 👿

Blöder weise ist flyback nämliche so programmiert, das es die Glade-Dateien in einem Unterverzeichnis des Verzeichnisses erwartet, in dem die Python-Skripte abgelegt werden. Würde ich mich daran halten, würde das rpm mit Pauken und Trompeten durch den Review rasseln. Also Hardcore-Patching zum ersten. Danach ging der Spaß weiter, da den Python-Skripten die übliche #!/usr/bin/python Kopfzeile fehlte. Also nochmal sämtliche Python-Skripte patchen. Das zu guter letzt noch die .desktop-Datei und die Glade-Dateien von dem Execute-Attribut befreit werden mussten, fällt da kaum noch ins Gewicht.

Am Ende meiner kleinen Patch-Orgie habe ich 9(!) Patches, die beim Bauen des rpm auf die flyback-Dateien losgelassen werden. 😎 Natürlich habe ich die Patches an die Entwickler weitergereicht. Ich bezweifle jedoch, das sie Einzug in den upstream Code finden werden. 🙁 Nichts desto trotz habe ich diesen K(r)ampf heute Nachmittag gewonnen und meinen Review-Request für flyback eingereicht. :mrgreen:

  1. enthalten die Informationen für die Masken []

Was mir bei Evolution fehlt

Nachdem ich allmählich an Gnome 3.0 gewöhnt habe, teste ich gerade ein wenig Evolution 3. Gut, auf den ersten Blick gibt es keinen großen Unterschied zur Version 2.32. Jedoch fällt relativ schnell auf, die Version 3.0 deutlich stabiler ist. Während die Version 2.32 sogar beim banalen Löschen von Einträgen aus dem Adressbuch abgestürzt ist, hatte ich bislang noch keinen einzigen Absturz. 🙂

Okay, einen Bug habe ich auch schon gefunden und gemeldet 😎 Schließlich können die Entwickler auch nur die Probleme beseitigen, die sie kennen 😉 Frei nach dem Motto:

If it’s not in bugzilla it’s not a bug

Was mir bei Evolution jedoch noch fehlt, ist eine Möglichkeit, Mails, deren Absender in einem bestimmten Adressbuch stehen, z.B. in einen speziellen Ordner zu verschieben. Das wäre z.B. für Newsletter ganz nützlich und Thunderbird hat ein solches Feature.