Geeft het geen problemen als je met schrikkeljaren aan de gang gaat?quote:Op zaterdag 1 december 2007 22:06 schreef Schepseltje het volgende:
[..]
ik zou zeggen probeer mijn code eens.. lijkt waterdicht
als ik voor begindatum 0 invul (01-01-1970) dan geeft ie
jaar: 37
maanden: 11
dagen: 0
uren: 22
minuten: 4
seconden: 50
als er ook maar 1 foutje in zit dan moet dat over een periode van 37 jaar wel opvallen
nee want hij berekent voor elke maand het aantal dagen gebaseerd op maand en jaar, dus in dat geval rekent hij voor februari 29 dagenquote:Op zaterdag 1 december 2007 22:09 schreef WyriHaximus het volgende:
[..]
Geeft het geen problemen als je met schrikkeljaren aan de gang gaat?
Mooi stukje code om ff te bewaren dusquote:Op zaterdag 1 december 2007 22:10 schreef Schepseltje het volgende:
[..]
nee want hij berekent voor elke maand het aantal dagen gebaseerd op maand en jaar, dus in dat geval rekent hij voor februari 29 dagen
ja leuk als je bv iemands exacte leeftijd wil berekenen ofzoquote:Op zaterdag 1 december 2007 22:15 schreef WyriHaximus het volgende:
[..]
Mooi stukje code om ff te bewaren dus.
Ja of wilt weten hoelang het duur voordat je kunt stoppen met werken of wanneer je 50 jaar getrouwt bent. Of what ever zijn zoveel dingen waar dit handig voor isquote:Op zaterdag 1 december 2007 22:15 schreef Schepseltje het volgende:
[..]
ja leuk als je bv iemands exacte leeftijd wil berekenen ofzo
Wat ik daarmee bedoelde was een geval als dit:quote:Op zaterdag 1 december 2007 22:06 schreef Schepseltje het volgende:
lijkt waterdicht
bij 02/02/2003 - 01/03/2004 zegt iequote:Op zaterdag 1 december 2007 22:28 schreef SuperRembo het volgende:
[..]
Wat ik daarmee bedoelde was een geval als dit:
02/02/2003 - 01/03/2004 is dat
1 jaar (02/02/2003 - 02/02/2004) + 28 dagen (02/02/2004 - 01/03/2004)
of
1 jaar (01/03/2003 - 01/03/2004) + 27 dagen (02/02/2003 - 01/03/2003)
Nou de oplossing met loop is ranzig/lomp. En de 'if ($months>11) { $months = 0; $years++; }' check zou na '$month++' moeten staan.quote:Op zaterdag 1 december 2007 23:14 schreef Schepseltje het volgende:
als iemand nog een fout ziet hoor ik het wel..
1 2 3 4 5 6 7 8 | for (; ; ) { if ($i > 10) { break; } echo $i; $i++; } |
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 | { if ($date1 > $date2) return false; $year1 = date("Y", $date1); $month1 = date("n", $date1); $day1 = date("j", $date1); $year2 = date("Y", $date2); $month2 = date("n", $date2); $day2 = date("j", $date2); $years = $year2 - $year1; $months = $month2 - $month1; $days = $day2 - $day1; if ($days < 0) { --$months; $days += date("t", mktime(0, 0, 0, $month2 + 1, 0, $year2)); } if ($months < 0) { --$years; $months += 12; } return array("years" => $years, "months" => $months, "days" => $days); } |
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 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | /* Plugin Name: DateDiff Version: 1.0 Plugin URI: http://maseko.com/project/wp-plugins/wp-datediff/ />Description: Calculate the difference between two dates like Microsoft Excel's datedif. Author: maseko Author URI: http://maseko.com/ /> License information Copyright 2005 Released under the GPL license http://www.gnu.org/licenses/gpl.txt This file is a plugin for WordPress WordPress is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. */ function datediff($start_date,$end_date="now",$unit="D") { $unit = strtoupper($unit); $start=strtotime($start_date); if ($start === -1) { print("invalid start date"); } $end=strtotime($end_date); if ($end === -1) { print("invalid end date"); } if ($start > $end) { $temp = $start; $start = $end; $end = $temp; } $diff = $end-$start; $day1 = date("j", $start); $mon1 = date("n", $start); $year1 = date("Y", $start); $day2 = date("j", $end); $mon2 = date("n", $end); $year2 = date("Y", $end); switch($unit) { case "D": echo intval($diff/(24*60*60)); break; case "M": if($day1>$day2) { $mdiff = (($year2-$year1)*12)+($mon2-$mon1-1); } else { $mdiff = (($year2-$year1)*12)+($mon2-$mon1); } echo $mdiff; break; case "Y": if(($mon1>$mon2) || (($mon1==$mon2) && ($day1>$day2))){ $ydiff = $year2-$year1-1; } else { $ydiff = $year2-$year1; } echo $ydiff; break; case "YM": if($day1>$day2) { if($mon1>=$mon2) { $ymdiff = 12+($mon2-$mon1-1); } else { $ymdiff = $mon2-$mon1-1; } } else { if($mon1>$mon2) { $ymdiff = 12+($mon2-$mon1); } else { $ymdiff = $mon2-$mon1; } } echo $ymdiff; break; case "YD": if(($mon1>$mon2) || (($mon1==$mon2) &&($day1>$day2))) { $yddiff = intval(($end - mktime(0, 0, 0, $mon1, $day1, $year2-1))/(24*60*60)); } else { $yddiff = intval(($end - mktime(0, 0, 0, $mon1, $day1, $year2))/(24*60*60)); } echo $yddiff; break; case "MD": if($day1>$day2) { $mddiff = intval(($end - mktime(0, 0, 0, $mon2-1, $day1, $year2))/(24*60*60)); } else { $mddiff = intval(($end - mktime(0, 0, 0, $mon2, $day1, $year2))/(24*60*60)); } echo $mddiff; break; default: print("{Datedif Error: Unrecognized \$unit parameter. Valid values are 'Y', 'M', 'D', 'YM'. Default is 'D'.}"); } } ?> |
1 2 3 | $now = date("Y-m-d"); $td = "2006-9-24"; $tde = "2007-12-21"; echo " Over ";datediff("now","$tde","M");echo " maanden en ";datediff("now", "$tde", "MD");echo " dagen ben ik klaar! (ongeveer dan..)" ?> |
nee, elke loop is voor een maand, en bij elke maand moet hij opnieuw kijken hoeveel dagen die maand heeftquote:Op zondag 2 december 2007 00:38 schreef SuperRembo het volgende:
Die loop is ranzig omdat als de datums 10 jaar uit elkaar liggen je minsten 8*12=48 keer voor niets de loop doorloopt en dus 48*3=144 keer date() voor niets gebruikt. Beetje jammer.
Ik zou 't zo aanpakken.
[ code verwijderd ]
Misschien nog niet helemaal bug-vrij, maar ik denk dat 't een goede basis is voor een elegante oplossing. Er zit nog geen ondersteuning voor tijd in, maar die is er zo aan toe te voegen.
quote:Op maandag 3 december 2007 15:58 schreef Chandler het volgende:
Vraagje, of iemand hier een bestaande routine voor weet.
Stel je hebt een grote lap tekst met spaties en tekens. Nu wil ik graag dat iedere regel wordt gecontrolleerd op het aantal spaties en stel alle regels beginnen minimaal 4 spaties vanaf links dan wil ik deze spaties verwijderen.
Hopelijk begrijpt iemand mij :P
1 2 3 | ltrim() ?> |
quote:Op maandag 3 december 2007 16:53 schreef DaFrenk het volgende:
Grmbl.. hoe krijg ik PHP zover dat hij geldbedragen als "7.50" schrijft en niet als "7.5"? Dus dat hij wel die 0 toevoegt?
1 2 3 | printf('%2f', $bedrag); ?> |
number_format();quote:Op maandag 3 december 2007 16:53 schreef DaFrenk het volgende:
Grmbl.. hoe krijg ik PHP zover dat hij geldbedragen als "7.50" schrijft en niet als "7.5"? Dus dat hij wel die 0 toevoegt?
1 2 3 4 5 6 7 8 | $money1 = 68.75; $money2 = 54.35; $money = $money1 + $money2; // echo $money will output "123.1"; $formatted = sprintf("%01.2f", $money); // echo $formatted will output "123.10" ?> |
Probeer een van de twee eensquote:Op maandag 3 december 2007 17:07 schreef DaFrenk het volgende:
Oké! Bedankt.. welke van de twee moet ik nu gebruiken?
1 2 3 4 5 6 7 8 9 | news.item.edit.php news.item.delete.php news.category.insert.php news.category.edit.php news.category.delete.php etc. |
1 2 | news.category.php |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |