 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
06.01.2006, 15:25
|
#1
|
|
TP-Member
Registriert seit: Aug 2005
|
Umwandeln von Sekunden in Jahr, Monat, Woche, ...
Hi,
Ich habe im Internet einen Codeschnipsel gefunden, welcher angegebene Sekunden als Jahre, Monate, Wochen, Tage, Stunden, Minuten und Sekunden ausgibt.
Code:
function tellSeconds($NumberOfSeconds)
{
$time_map = array(
'Jahre' => 31536000, # 365 Tage
'Monate' => 2592000, # 30 Tage
'Wochen' => 604800, # 7 Tage
'Tage' => 86400,
'Stunden' => 3600,
'Minuten' => 60,
'Sekunden' => 1,
);
$SecondsTotal = $NumberOfSeconds;
$SecondsLeft = $SecondsTotal;
$stack = array();
foreach ($time_map as $k => $v) {
if ($SecondsLeft < $v || $SecondsLeft == 0) {
continue;
} else {
$amount = floor($SecondsLeft/ $v);
$SecondsLeft = $SecondsLeft % $v;
$label = ($amount>1)
? $k
: substr($k, 0, -1);
$stack[] = sprintf('<strong>%s</strong> %s', $amount, $label);
}
}
$cnt = count($stack);
if ($cnt > 1){
$tmp1 = array_pop($stack);
$tmp2 = array_pop($stack);
array_push ($stack, $tmp2 . ' und '.$tmp1);
};
$result = join (', ', $stack);
return $result;
}
if (isset($_POST['seconds'])) {
$_POST['seconds'] = intval($_POST['seconds']);
print tellSeconds($_POST['seconds']);
}
echo <<< EOT
<form action="{$_SERVER['PHP_SELF']}" method="post">
<input type="text" name="seconds" value="{$_POST['seconds']}">
<input type="submit" value="Sekunden umrechnen">
</form>
EOT;
Nun würde ich aber gerne nichts ausgeben, sondern die Werte in die jeweilige Variable speichern ($jahr, $monat, $woche, $tag, $stunde, $minute, $sekunde).
Weiß jemand wie ich den Codeschnipsel umstellen muss, dass ich dies so gespeichert bekomme?
Danke im Voraus.
Mfg. -Andi-
|
|
|
06.01.2006, 16:07
|
#2
|
|
TP-Member
Registriert seit: Aug 2005
|
Hi,
habs bereits gelöst. Trotzdem danke.
Mfg. -Andi-
|
|
|
06.01.2006, 17:04
|
#3
|
|
TP-Specialist
Registriert seit: Mar 2005
Ort: Unterfranken
|
Und wie hast du das gelöst, falls jemand gerade vor demselben Problem sitzt?
|
|
|
12.01.2006, 10:50
|
#4
|
|
TP-Member
Registriert seit: Aug 2005
|
Hihi!
Also ich habe das ganze aus der Funktion herausgelöscht und so in mein Script eingearbeitet, um die Variablen zu speichern.
Code:
$NumberOfSeconds = "123456789000000000";
$time_map = array(
'Jahre' => 31536000, # 365 Tage
'Monate' => 2592000, # 30 Tage
'Wochen' => 604800, # 7 Tage
'Tage' => 86400,
'Stunden' => 3600,
'Minuten' => 60,
'Sekunden' => 1,
);
$SecondsTotal = $NumberOfSeconds;
$SecondsLeft = $SecondsTotal;
$stack = array();
foreach ($time_map as $k => $v) {
if ($SecondsLeft < $v || $SecondsLeft == 0) {
continue;
} else {
$amount = floor($SecondsLeft/ $v);
$SecondsLeft = $SecondsLeft % $v;
$label = ($amount>1)
? $k
: substr($k, 0, -1);
$stack[] = sprintf('<strong>%s</strong> %s', $amount, $label);
}
}
$cnt = count($stack);
if ($cnt > 1){
$tmp1 = array_pop($stack);
$tmp2 = array_pop($stack);
array_push ($stack, $tmp2 . ' und '.$tmp1);
};
$result = join (', ', $stack);
return $result;
$jahr = $stack[0];
$woche = $stack[1];
......
Wenn man lediglich die Zeit haben möchte, genügt es auch die Funktion so zu lassen und über tellseconds(....) aufzurufen.
Code:
function tellSeconds($NumberOfSeconds)
{
$time_map = array(
'Jahre' => 31536000, # 365 Tage
'Monate' => 2592000, # 30 Tage
'Wochen' => 604800, # 7 Tage
'Tage' => 86400,
'Stunden' => 3600,
'Minuten' => 60,
'Sekunden' => 1,
);
$SecondsTotal = $NumberOfSeconds;
$SecondsLeft = $SecondsTotal;
$stack = array();
foreach ($time_map as $k => $v) {
if ($SecondsLeft < $v || $SecondsLeft == 0) {
continue;
} else {
$amount = floor($SecondsLeft/ $v);
$SecondsLeft = $SecondsLeft % $v;
$label = ($amount>1)
? $k
: substr($k, 0, -1);
$stack[] = sprintf('%s %s', $amount, $label);
}
}
$cnt = count($stack);
if ($cnt > 1){
$tmp1 = array_pop($stack);
$tmp2 = array_pop($stack);
array_push ($stack, $tmp2 . ' und '.$tmp1);
};
$result = join (', ', $stack);
return $result;
}
Mfg. -Andi-
|
|
|
12.01.2006, 11:27
|
#5
|
|
TP-Urgestein
Registriert seit: Nov 2003
Ort: NRW
|
Warum umschreiben?
Man kann ja auch das Array via return aus der function geben und dann über ein for ausgeben, oder auf die jeweiligen Elemente des Arrays zugreifen.
PHP-Code:
<? function tellSeconds($NumberOfSeconds) {
$time_map = array( 'Jahre' => 31536000, # 365 Tage 'Monate' => 2592000, # 30 Tage 'Wochen' => 604800, # 7 Tage 'Tage' => 86400, 'Stunden' => 3600, 'Minuten' => 60, 'Sekunden' => 1, );
$SecondsTotal = $NumberOfSeconds;
$SecondsLeft = $SecondsTotal;
$stack = array();
foreach ($time_map as $k => $v) {
if ($SecondsLeft < $v || $SecondsLeft == 0) { continue; } else { $amount = floor($SecondsLeft/ $v); $SecondsLeft = $SecondsLeft % $v;
$label = ($amount>1) ? $k : substr($k, 0, -1);
$stack[] = sprintf('%s %s', $amount, $label); } } return $stack; } $ausgabe = tellSeconds(36005);
for($i=0;$i<count($ausgabe);$i++) { if(count($ausgabe) >1) echo $i == count($ausgabe)-1 ? "und ".$ausgabe[$i] : $ausgabe[$i].", "; else echo $ausgabe[$i]; } ?>
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 05:46 Uhr.
|
 |