Sommer-/Winterzeit?? Minusberechnungen
juha
- perl
0 Frank Schönmann0 juha
0 Klaus Mock
Hallo Zusammen
Wenn ich die lokale Zeit ausgebe, wird automatisch immer die Sommerzeit ausgegeben, ich möchte aber bei Winterzeit auch die Winterzeitangabe, kann man das automatisch einstellen? Wie?
Ich arbeite mit localtime().
Andere Frage.. ;-)
Wenn ich Berechnungen in Minus und Plus lösen möchte, wie ist dies möglich, bei minus kommt bei mir immer eine sehr komische ausgabe, wie z.B. 0-144:0-57:0-46?
Hier kurz der Code:
#Total Minus-/Plus- berechnen und ausgeben
$stunde = "".int($sollstunden/3600)."";
$minute = "".int(($sollstunden-($stunde*3600))/60)."";
$sekunde = "".int(($sollstunden-($stunde*3600)-($minute*60)))."";
$sollstunden = 0;
zeitformat();
$total_plus_minus = "$stunde:$minute:$sekunde";
$stunde = 0;
$minute = 0;
$sekunde = 0;
print "<tr><td>Plus-/Minustotal<td bgcolor = #FFCCCC><li>$total_plus_minus</td></tr></table>";
$wochentotal = 0;
grüsse juha
hi!
Wenn ich die lokale Zeit ausgebe, wird automatisch immer die
Sommerzeit ausgegeben, ich möchte aber bei Winterzeit auch die
Winterzeitangabe, kann man das automatisch einstellen? Wie?
Ich arbeite mit localtime().
localtime sollte anhand der System-Einstellungen überprüfen, ob
gerade Sommer- oder Winterzeit angezeigt werden soll, und das
richtige Ergebnis ausspucken. Wenn nicht, ist wohl das System falsch
konfiguriert.
Abhilfe: gmtime verwenden und selbst die richtige Zeit ausrechnen
oder Fehlerschema suchen und dem entgegenwirken.
Wenn ich Berechnungen in Minus und Plus lösen möchte, wie ist dies
möglich, bei minus kommt bei mir immer eine sehr komische ausgabe,
wie z.B. 0-144:0-57:0-46?
Es ist auch relativ schwierig, wenn die Zeitangabe so getrennt ist,
Zeit abzuziehen oder zu addieren. Am einfachsten lässt sich das
Problem lösen, indem du die gegebene Zeit in Sekunden umrechnest,
danach die Zeit in Sekunden addierst oder subtrahierst, und danach
die Sekunden wieder in eine normale Zeitangabe umrechnest.
Aus den einzelnen Komponenten eine Zeitangabe zu machen, geht zb.
mit dem Modul Time::Local.
Alternative: das Modul Date::Calc verwenden. Ich glaube, damit kann
man solche Umrechnungen mit bereits fertigen Funktionen machen, bin
mir aber nicht ganz sicher.
bye, Frank!
hallö
Es ist auch relativ schwierig, wenn die Zeitangabe so getrennt ist,
Zeit abzuziehen oder zu addieren. Am einfachsten lässt sich das
Problem lösen, indem du die gegebene Zeit in Sekunden umrechnest,
danach die Zeit in Sekunden addierst oder subtrahierst, und danach
die Sekunden wieder in eine normale Zeitangabe umrechnest.
Aus den einzelnen Komponenten eine Zeitangabe zu machen, geht zb.
mit dem Modul Time::Local.
Alternative: das Modul Date::Calc verwenden. Ich glaube, damit kann
man solche Umrechnungen mit bereits fertigen Funktionen machen, bin
mir aber nicht ganz sicher.
Ich habe bereits in sekunde gerechnet, ist die Berechnung falsch?
Hier der Code:
#Total Minus-/Plus- berechnen und ausgeben
$stunde = "".int($sollstunden/3600)."";
$minute = "".int(($sollstunden-($stunde*3600))/60)."";
$sekunde = "".int(($sollstunden-($stunde*3600)-($minute*60)))."";
$sollstunden = 0;
zeitformat();
$total_plus_minus = "$stunde:$minute:$sekunde";
$stunde = 0;
$minute = 0;
$sekunde = 0;
print "<tr><td>Plus-/Minustotal</td><td bgcolor = #FFCCCC><li>$total_plus_minus</td></tr></table>";
$wochentotal = 0;
zeitformat(); bedeutet wenn die zeitangabe unter 10 ist kommt vorne eine Null hin, wegen der darstellung!
cu juha
Hallo,
Wenn ich die lokale Zeit ausgebe, wird automatisch immer die Sommerzeit ausgegeben, ich möchte aber bei Winterzeit auch die Winterzeitangabe, kann man das automatisch einstellen? Wie?
Ich arbeite mit localtime().
localtime ist von der Sytsemeinstellung abhängig, also wird dort irgendetwas nicht stimmen.
Wenn ich Berechnungen in Minus und Plus lösen möchte, wie ist dies möglich, bei minus kommt bei mir immer eine sehr komische ausgabe, wie z.B. 0-144:0-57:0-46?
Das sieht für mich so aus, also ob Du nicht rechnest sondern eher Texte generiert hast, in der Art
$differenz_stunden = "$ende_stunde-$beginn_stunde";
$stunde = "".int($sollstunden/3600)."";
$minute = "".int(($sollstunden-($stunde*3600))/60)."";
$sekunde = "".int(($sollstunden-($stunde*3600)-($minute*60)))."";
$sollstunden = 0;
zeitformat();
$total_plus_minus = "$stunde:$minute:$sekunde";
Hier ein etwas ungewöhlicher Vorschlag, aber IMHO recht praktisch:
($sekunde,$minute,$stunde,$tage) =gmtime($sollstunden);
$total_plus_minus = sprintf("%2.2d:%2.2d:%2.2d",$stunde,$minute,$sekunde);
$sollstunden = 0;
Erklärung:
gmtime erwartet eine Zahl, welche die Sekunden seit der epoch-time (das ist irgend ein Datum, meist 1.1.1900 0 Uhr). Das nutze ich hier aus um die Anzahl der Sekunden in die Einzelwerte aufzuteilen. Die Tage habe ich nur mitgenommen, falls Du auch Zeitabstände über 24 Stunden ermitteln willst.
Bis Zeitabstände von einem Monat funktioniert das recht gut.
Und sprintf bzw. printf hilft Dir, das ganze hübsch formatiert auszugeben.
Grüße
Klaus