{"id":398,"date":"2006-08-13T22:43:43","date_gmt":"2006-08-13T20:43:43","guid":{"rendered":"http:\/\/blog.tokbela.de\/2006\/08\/13\/398\/"},"modified":"2006-08-13T22:43:44","modified_gmt":"2006-08-13T20:43:44","slug":"nachtrag-zum-kalenderproblem","status":"publish","type":"post","link":"https:\/\/blog.tokbela.de\/?p=398","title":{"rendered":"Nachtrag zum Kalenderproblem"},"content":{"rendered":"<p>Ausloeser fuer <a href=\"https:\/\/blog.tokbela.de\/2006\/08\/13\/394\/\">diesen Beitrag<\/a> war ja die Frage, wie man in der Programmiersprache PHP den Abstand zwischen zwei Terminen bzw. Daten menschenverstaendlich (x Jahre, y Monate, z Wochen etc.) ausdrueckt. In den Kommentaren des fragenden Artikels habe ich eine Loesungsidee von mir verlinkt und da sie evtl. auch fuer andere interessant sein koennte (und die Links nicht lange gueltig bleiben), moechte ich sie in diesem Beitrag Google-freundlicher vorstellen.<\/p>\n<p>Grundlage ist das Prinzip des Auffuellens: Ich ueberlege mir, wie oft ein komplettes Jahr (mit Beachtung von Schalttagen und unterschiedlichen Monatslaengen) in die gegebene Zeitspanne passt. Nachdem ich den Zeitraum soweit wie moeglich mit Jahren aufgefuellt habe, probiere ich es als naechstes mit kuerzeren Intervallen, also Monaten. So verfaehrt man fort, bis man bei der kleinsten Einheit, in diesem Fall Sekunden, angekommen ist. PHP sorgt mit der Funktion <a href=\"http:\/\/www.php.net\/manual\/en\/function.strtotime.php\">strtotime()<\/a>  dafuer, dass alle Sonderfaelle im Kalender beachtet werden und das Resultat ist bestechend einfach, wenn auch alles andere als elegant.<\/p>\n<p><code>&lt;?php<br \/> $from = mktime(12, 0, 0, 8, 13, 2006);<br \/> $till = mktime(11,59,59, 8, 12, 2016);<\/code><\/p>\n<p><code>$diff = array(&#39;year&#39;,&#39;month&#39;,&#39;week&#39;,&#39;day&#39;,&#39;hour&#39;,&#39;minute&#39;,&#39;second&#39;);<br \/> $count = array(0, 0, 0, 0, 0, 0, 0);<br \/> $tmpdate = $from; <\/code><\/p>\n<p><code> for ($i = 0 ; $i &lt; 7 ; $i++)<br \/> &nbsp; while (strtotime(&quot;+1 &quot;.$diff[$i], $tmpdate) &lt;= $till) {<br \/> &nbsp;&nbsp;&nbsp; $tmpdate = strtotime(&quot;+1 &quot;.$diff[$i], $tmpdate);<br \/> &nbsp;&nbsp;&nbsp; $count[$i]++;<br \/> &nbsp; }<br \/> <\/code><\/p>\n<p><code> echo date(&quot;d.m.Y H:i:s&quot;, $from).&quot;&lt;br&gt;&quot;;<br \/> echo date(&quot;d.m.Y H:i:s&quot;, $till).&quot;&lt;br&gt;&quot;;<br \/> echo join($count, &quot; - &quot;);<br \/> ?&gt;<\/code><\/p>\n<p>Das Codefragment ist wirklich nur als proof-of-concept zu verstehen, denn weder ist PHP meine Haus-und-Hof-Sprache noch habe ich mir bei dem Entwurf Muehe in punkto &quot;sauberes&quot; Programmieren gegeben. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ausloeser fuer diesen Beitrag war ja die Frage, wie man in der Programmiersprache PHP den Abstand zwischen zwei Terminen bzw. Daten menschenverstaendlich (x Jahre, y Monate, z Wochen etc.) ausdrueckt. In den Kommentaren des fragenden Artikels habe ich eine Loesungsidee von mir verlinkt und da sie evtl. auch fuer andere interessant sein koennte (und die [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-398","post","type-post","status-publish","format-standard","hentry","category-chaos"],"_links":{"self":[{"href":"https:\/\/blog.tokbela.de\/index.php?rest_route=\/wp\/v2\/posts\/398","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.tokbela.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.tokbela.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.tokbela.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.tokbela.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=398"}],"version-history":[{"count":0,"href":"https:\/\/blog.tokbela.de\/index.php?rest_route=\/wp\/v2\/posts\/398\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.tokbela.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=398"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.tokbela.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=398"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.tokbela.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=398"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}