/blog/perl


substr() in Perl
[154170 mal gelesen]
foreach in Perl
[129166 mal gelesen]
Arrays in Perl - Besonderheiten
[125384 mal gelesen]
split() in Perl - Zeichenketten teilen
[113580 mal gelesen]
open() - Dateien öffnen in Perl
[108991 mal gelesen]
grep - Listen durchsuchen in Perl
[94729 mal gelesen]
chomp() in Perl
[93643 mal gelesen]
push in Perl
[90859 mal gelesen]
sleep in Perl - Das aktuelle Script warten lassen
[75983 mal gelesen]
index() in Perl - Zeichenkette in Zeichenkette suchen
[59577 mal gelesen]


Arrays
Dateien
HTPC
Hashes
Leistungsoptimiert
PHP
Perl
RegEx
Schleifen
Script
Skalare
Sonstiges
System
Webserver
Zur Startseite


Human Date - "Menschliches Datum"

Suchbegriff
 

Also vornweg: Was verstehe ich unter "menschliches Datum"?
Besser ausgedrückt wäre es vielleicht "menschliche Zeitangabe" oder "Alltägliche Datumsangabe". Immer noch nicht schlauer?

Nun, ganz einfach:
Wie oft sagt man: "Ich komme in einer Woche", oder, "übermorgen vor einem viertel Jahr war der Geburtstag", oder "vorgestern" oder bei Kindern, "vorvorgestern vor einer Woche".

Nun, was uns Menschen klar ist, damit hat dem Computer doch ziemliche Probleme.

Was ist vorgestern, oder morgen in einem jahr, oder ein dreiviertel Jahr? Abstrakte Begriffe wie heute und morgen, übermorgen, vorvorgestern sind keine für den Computer verständlichen Größen, müssen dewegen umgewandelt werden, so daß der Computer etwas damit anfangen kann.

Bingo: Ohne Script geht da nix!

Ich hab da mal ein bißchen herumprobiert und bin zu folgender Lösung gekommen, deren Ergebnis ich hier vorstelle.

Geben Sie bitte Texte wie
Vor einer Woche
Vor einem Jahr
Morgen in einem dreiviertel Jahr
Vorgestern
In 87 Tagen
Morgen in 100 Tagen
Morgen vor 100 Tagen
Vorgestern vor 4 Wochen
Vor 3 Wochen
Vor einem halben Jahr
In einem viertel Jahr
Übermorgen in einer Woche
Vor etwa einer Woche
In ca. 2 Monaten
In ungefähr 40 Tagen
Vor genau 12 tagen
In ca. 40 Wochen ist die Geburt Ihres Kindes
Wenn man täglich einen € spart, sind es in ungefähr 1 Jahr 400 €
Wenn man täglich einen € spart, sind es in genau 400 Tagen 400 €
Vor einem Jahr und zwei Wochen stach dass Schiff in See
In einem Jahr und einem Tag geht's los!!!
In einer Woche und 2 Tagen schicke ich das Paket weg
Vor ungefähr einem Jahr, 4 Wochen und zwei tagen
In 2 Jahren, einem Monat und 4 Wochen
in einem jahr zwei tage
in einem jahr zwei tagen

Oder (und nun wird's echt strange):
Vor ungefähr einem Jahr, 2 Monaten, 2 Wochen und zwei tagen
"Letzten Samstag" oder "übernächsten Montag" und auch "letzten Sonntag vor 2 Wochen"

oder in Kombination
übernächsten Montag vor ungefähr einem Jahr, 2 Monaten, 2 Wochen und zwei tagen (ähm... nunja, zum Testen ist's gut, aber im echten Leben wohl eher ungewöhnlich...)

Oder vielleicht als Frage:
Welches Datum war letzten Samstag vor 2 Wochen
Welcher tag war vorgestern
Welches Datum ist heute in drei Wochen
Scheint morgen in 3 Wochen die Sonne? (Funktioniert natürlich nicht... ABER: Wenn ich jetzt gemein wäre würde ich das Datum bestimmen, bei einer Wetterseite nachgucken lassen, und könnte dann sagen: yo, klar, vielleicht oder eher nicht, oder weiß nicht... vielleicht sieht man daran wieder etwas die Möglichkeiten des Scriptes)

usw. ein, das Script wirft dann den Tag bezogen auf heute heraus.
(Naja, im günstigsten Fall zumindest...)

"Verstandene" Schlüsselworte sind
heute, Morgen, übermorgen, überübermorgen, gestern, vorgestern, vorvorgestern, in (IN einer Woche, Tag, Jahr), vor (VOR einer Woche, Tag, Jahr), viertel jahr, halbes Jahr, dreiviertel Jahr, x Monate, x Tage, x Jahre, ca. ungefähr, circa, genau, absolut, und x Tagen, und x Wochen, und ein Tag, und eine Woche, letzten (letzten Samstag), vorletzten, vorvorletzten, nächsten, übernächsten, überübernächsten (Wochentag),
letzter (letzter Samstag), vorletzter, vorvorletzter, nächster, übernächster, überübernächster (Wochentag)

Übrigens
Bitte nur deutsche Umgangssprache verwenden, englisch kann das Script nicht, auch keine anderen Sprachen und Dialekte!

Suchbegriff
 

Die Regeln, die verwendet werden, sind folgende
In x Tagen -> heute +x Tagen
Vor x Tagen -> heute -x Tagen
In x Woche(n) -> heute + x*7 Tagen
vor x Woche(n) -> heute - x*7 Tagen

In x Monaten -> Monatszahl + x -> Tageszahl bleibt gleich, Jahre werden erhöht, unmögliche Tageszahlen (30 Februar usw.) werden umgerechnet.

Vor x Monaten -> Monatszahl - x -> Tageszahl bleibt gleich, Jahre werden vermindert, unmögliche Tageszahlen (30 Februar usw.) werden umgerechnet.

In x Jahren -> Jahreszahl + x, Tag und Monatszahl bleibt gleich
Vor x Jahren -> Jahreszahl - x, Tag und Monatszahl bleibt gleich

Vor x Jahren und 2 Wochen = Jahr-x - 2 Wochen
In x Jahren und 2 Wochen = Jahr+x + 2 Wochen

Das Schema sollte klar sein...

Ich bin übrigens im Moment selbst recht überrascht, wie gut das schon klappt!

Was noch schön wäre
Toll wäre natürlich noch etwas wie "Am ersten Dienstag im Mai letzten Jahres", oder "Der dritte Sonntag im September"... aber was noch nicht ist kann ja noch werden!

Interessant wären auch noch Zeiträume, also zum Beispiel "Vor ungefähr einem Jahr", was dann den Tag von heute minus 1 Jahr ergibt, und darum einen Zeitraum von einer Woche vorher und nachher.

Fortsetzung
Es werden jetzt auch Grammatikfehler wie "In einen Tag" oder "Vor einen Monat" erkannt.

Und weils so schön ist, funktioniert jetzt auch so ne Geschichte wie "Letzten Samstag" oder "übernächsten Montag" und auch "letzten Sonntag vor 2 Wochen" oder "vorvorletzten Sonntag vor zwölf Wochen und einem tag".

Fortsetzung folgt...

 


SSD-Festplatte - Wassn das???
Die Transliteration - Nur ein Zeichen in einem Skalar ersetzen
Select - Case in Perl
Windows 7 XP Mode – Wo finde ich den XP-Modus unter Windows 7?
Mac-Adresse beim Apple Macintosh herausfinden
SGN-Funktion für Perl

Eigene IP herausfinden mit Perl
Epoche live in Datum umwandeln
Firefox 3 - Exe-Files downloaden


Gesamtverzeichnis
Februar 2010
Dezember 2009
Oktober 2009
Januar 2009
Dezember 2008
November 2008
September 2008
August 2008
Juli 2008
Juni 2008
Mai 2008
April 2008
Januar 2008
Dezember 2007
November 2007
Oktober 2007
September 2007
August 2007
Juni 2007
Mai 2007
April 2007
März 2007
Februar 2007
Januar 2007
Dezember 2006


Mister Wong

RSS-Feed

Heute ist der
23.11.2024

Es ist
13:55:08 Uhr

Ihre IP:
3.149.232.87

Blog-Einträge: 186

Die letzten 24 Stunden im Überblick


Gelesene Beiträge insgesamt:
4423909


Webseiten vergleichen
Kalender mit Feiertagen - 2028
Links finden und testen
Menschliche Datumsangaben
IP zu Domain herausfinden
Time live in Datum umwandeln
Perl für Windows



Impressum