Beitrag von fb (420 Beiträge) am Dienstag, 6.Februar.2001, 02:17.
Datum in time umwandeln?
Antworten
Beitrag von Stephan Hix (106 Beiträge) am Dienstag, 6.Februar.2001, 08:49.
Re: Datum in time umwandeln?
Hi fb!
Ich habe keine Ahnung ob das klappt, aber versuch mal sowas:
# Datum zerlegen in Tag, Monat und Jahr
@datumsplit = split (/./,$datum);
#Vorbereitung der Variablen
$seconds,$minutes,$hours=0;
$day=$datumsplit[0];
$month=$datumsplit[1]-1;
$year=$datumsplit[2]-1900;
# Umwandlung in Epochen-Sekunden
use Time::Local;
$time = timegm($seconds, $minutes, $hours, $day, $month, $year);
Ich habe das auch nur aus dem "Perl Kochbuch" rausgesucht. Bisher nix Test und nix Erfahrung.
Gruß
Stephan
Antworten
Beitrag von Stephan Hix (106 Beiträge) am Dienstag, 6.Februar.2001, 09:47.
Geht so nicht...
Ich habe das mal getestet:
$datum="06.02.2001";
# Datum zerlegen in Tag, Monat und Jahr
@datumsplit = split (/\./,$datum);
#Vorbereitung der Variablen
$seconds=0;
$minutes=0;
$hours=0;
out $hours.$minutes.$seconds."Zeit <br>";
$day=$datumsplit[0];
out $day ."<br>";
$month=$datumsplit[1];
out $month ."<br>";
$year=$datumsplit[2];
out $year ."<br>";
# Umwandlung in Epochen-Sekunden
use Time::Local;
$time=timegm($seconds,$minutes,$hours,$day,$month-1,$year-1900);
Wenn Du die letzten Zeilen in Kommentare umwandelst, siehst Du, dass der use-Aufruf nicht funktioniert.
Das scheint aus BP heraus nicht zu gehen, sorry.
Gruß
Stephan
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Dienstag, 6.Februar.2001, 13:12.
Re: Datum in time umwandeln? - wozu?
Wozu brauchst Du das denn? Würde mich interessieren ;-)
Antworten
Beitrag von fb (420 Beiträge) am Dienstag, 6.Februar.2001, 18:16.
Re: Datum in time umwandeln? - wozu? @Christoph
Hallo Christoph,
Sander hat das Problem gestern anders gelöst. Trotzdem würde ich gerne wissen ob es geht. Eigentlich geht es um einen vergleich von zwei Datums(zeit) Werten. Der eine wird aus einer DB ausgelesen und wird mit dem Aktuellen Datum - 10Tage verglichen.
Das datum - 10 Tage macht aber manchmal Probs. Z.B. Jahreswechsel. Um den vergleich zu realisieren hat Sander beide datumswerte convertiert in Strings ohne Punkte, dann verglichen < Klappt auch.
Das bedarf aber ein Paar Zeilen code.
Um das abzukürzen (und auch Jahreswechsel prob), war meine Idee beide Werte als sec zu vergleichen z.B.:
if("$date" < time()-864000)
wenn $date als sec gespeichert ist funzt das. So brauche ich keine einzige convertierung des Formates.
Würde natürlich alles gehen wenn $date mit Put von uns gespeichert würde als:
Da "date" in der datenbank als Datumsfeld (bei Änderung) mit vorgegebenem Ein- und Ausgabeformat steht geht das nicht.(vorteil wir müssen das Datum bei Änderungen nicht mit dem Datensatzt abspeichern, macht ja BP)
$date wird eigentlich nicht zur ausgabe benötigt, daher ist das Format unwichtig.
So ich hoffe Du(Ihr) verstehst worum es geht.
Gibt es vielleicht die möglichkeit in einem Datumsfeld als ein- und ausgabeformat sec anzugeben?
Vielleicht bin ich ja auch etwas umständlich :-)
FB
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Dienstag, 6.Februar.2001, 19:09.
Re: Datum in time umwandeln? - wozu? @Christoph
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Dienstag, 6.Februar.2001, 19:10.
Re: Datum in time umwandeln? - wozu? nachtrag: "lt"
Antworten
Beitrag von Christoph (49 Beiträge) am Dienstag, 6.Februar.2001, 19:11.
Re: Datum in time umwandeln? - wozu? nachtrag: ) fehlt
Antworten
Beitrag von fb (420 Beiträge) am Dienstag, 6.Februar.2001, 19:53.
Re: Datum in time umwandeln? - antwort @Christoph
Auch wenns Dir reicht :-)
>Noch ne Frage: Wieso macht Ihr nicht gleich die >Abfrage so:
>get "Datum<-10";
währe ne zusätliche abrage.
Der Vergleich findet so statt:
get "$feld==irgentwas","db";
while(get_next("db"))
{
out "gib hier für alle was aus";
if($date ne "") #Also steht da überhaupt ein datum?
{
out "mache dieses für alle mit datum";
if($date < $old)
{
out "gib das aus für alle mit Älterem datum";
}
out "mach das auch noch für alle mit datum";
}
}
in $old steht heutiges datum - 10Tage drinn
Ansonsten wir haben ja das problem jetzt anders gelöst. Ist halt nur für ne einfachere handhabung. Eventuell auch für andere mit ähnlichen Probs.
Fänd ich einfach Toll wenn man über eine einzige zeile (if) das prob lösen könnte.
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Dienstag, 6.Februar.2001, 21:04.
Re: Datum in time umwandeln? - antwort @Christoph - ja aber das isses doch
Das ist die einzeilige ohne-weitere-Abfrage-Lösung:
if($date lt datum(-10, "intern")) ...
hier der gesamte code:
get "$feld==irgentwas","db";
while(get_next("db"))
{
out "gib hier für alle was aus";
if($date ne "") #Also steht da überhaupt ein datum?
{
out "mache dieses für alle mit datum";
if($date lt datum(-10,"intern"))
{
out "gib das aus für alle mit Älterem datum";
}
out "mach das auch noch für alle mit datum";
}
}
das isses, mehr nich...
Antworten