Time to Text
Gepost door PHP 6 op 19-02-2009 19:02.
TIME TO TEXT
Het komt steeds vaker voor dat je naast een datum een stuk tekst hebt waar je kunt zien hoelang de plaats datum geleden is. Ik zelf kon geen degelijk PHP script vinden wat voldoet aan mijn eisen dus schreef ik het volgende:
Het script geeft een output die je zelf kunt samenstellen uit de volgende instellingen:
## Formaat ##
%y geeft het aantal jaren
%m geeft het aantal maanden
%w geeft het aantal weken
%d geeft het aantal dagen
%h geeft het aantal uren
%i geeft het aantal minuten
%s geeft het aantal seconden
- Een formaat zoals: "%h %i %s" is dus gewoon mogelijk!
## Word ##
0 geeft volledige woorden (Minuut, minuten)
1 geeft afkortingen (j, m, d)
2 geeft geen benaming
## Type ##
0 geeft altijd een output van een formaat ook als dit 0 is.
0 geeft alleen een output van een formaat wanneer deze hoger als 0 is
Voorbeelden:
62 seconden met formaat "%i" geeft als ouput "1 minuut"
62 seconden met formaat "%i %s" geeft als output "1 minuut 2 seconden"
4672 seconden met formaat "%i %s" geeft als output "77 minuten 52 seconden"
4672 seconden met formaat "%h %i %s" geeft als output "1 uur 17 minuten 52 seconden"
4672 seconden met formaat "%h %i" geeft als output "1 uur 17 minuten"
200000 seconden met formaat "%d" geeft als output "2 dagen"
200000 seconden met formaat "%d %h" geeft als output "2 dagen 7 uur"
200000 seconden met formaat "%d %h %i" geeft als output "2 dagen 7 uur 33 minuten"
200000 seconden met formaat "%d %h %i %s" geeft als output "2 dagen 7 uur 33 minuten 20 seconden"
2004321 seconden met formaat "%w" geeft als output "3 weken"
2004321 seconden met formaat "%w %s" geeft als output "3 weken 189921 seconden"
1851854151 seconden met formaat "%y %m %w %d %h %i %s" geeft als output "58 jaar 8 maanden 3 weken 2 dagen 11 uur 55 minuten 51 seconden"
1851854151 seconden met formaat "%m" geeft als output "714 maanden"
Let op: Je moet het aantal seconden ingeven waarover je een aangepast formaat wilt berekenen!
Kritiek is welkom!
Bestanden van dit script
index.php
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | <?php
error_reporting(E_ALL);
/*
Door: A.K van Schayk
Datum: 19-02-2009
*/
/*
Geef hier het aantal seconden*/
$seconden = 345678;
/*
$format "%y" geeft het aantal jaren.
$format "%m" geeft het aantal maanden
$format "%w" geeft het aantal weken
$format "%d" geeft het aantal dagen
$format "%h" geeft het aantal uren
$format "%i" geeft het aantal minuten
$format "%s" geeft het aantal seconden */
$format = '%h %i %s';
/*
$word "0" geeft volledige woorden (uren, minuten)
$word "1" geeft afkortingen zoals (j, m, d)
$word "2" geeft geen benaming alleen een output in cijfers*/
$word = 0;
/*
$type "0" Geeft als een $format 0 is gewoon de tijd weer met een 0 (Bijvoorbeeld: 0s, 0 seconden)
$type "1" Geeft als een $format 0 is geen output over het formaat
*/
$type = 1;
function timetotext($seconden, $format, $word, $type){
$output = strtolower($format);
$part[]['settings'] = array('%y', 60 * 60 * 24 * 365, ' jaar', ' jaar', 'y');
$part[]['settings'] = array('%m', 60 * 60 * 24 * 30, ' maand', ' maanden', 'm');
$part[]['settings'] = array('%w', 60 * 60 * 24 * 7, ' week', ' weken', 'w');
$part[]['settings'] = array('%d', 60 * 60 * 24, ' dag', ' dagen', 'd');
$part[]['settings'] = array('%h', 60 * 60, ' uur', ' uur', 'h');
$part[]['settings'] = array('%i', 60, ' minuut', ' minuten', 'i');
$part[]['settings'] = array('%s', 1, ' seconden', ' seconden', 's');
$row = 0;
while($row <= count($part) - 1){
if(strpos($output, $part[$row]['settings'][0]) !== false){
if($seconden >= $part[$row]['settings'][1]){
$thispart_output = floor($seconden / $part[$row]['settings'][1]);
$seconden = $seconden % $part[$row]['settings'][1];
if($thispart_output <= 0){
if($type == 1) $thispart_output = '';
} else if($thispart_output == 1 && $word <= 1){
if($word == 0) $thispart_output .= $part[$row]['settings'][2];
if($word == 1) $thispart_output .= $part[$row]['settings'][4];
} else if($thispart_output > 1 && $word <= 1){
if($word == 0) $thispart_output .= $part[$row]['settings'][3];
if($word == 1) $thispart_output .= $part[$row]['settings'][4];
}
} else {
$thispart_output = '';
if($type == 0){
$thispart_output = '0';
if($word == 0) $thispart_output .= $part[$row]['settings'][3];
if($word == 1) $thispart_output .= $part[$row]['settings'][4];
}
}
$output = str_replace($part[$row]['settings'][0], $thispart_output, $output);
}
$row++;
}
return $output;
}
echo timetotext($seconden, $format, $word, $type);
?> |


