{"id":1502,"date":"2012-08-14T22:33:24","date_gmt":"2012-08-14T20:33:24","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=1502"},"modified":"2012-08-15T12:35:23","modified_gmt":"2012-08-15T10:35:23","slug":"snippet-kalender-des-jahrs-ausgeben","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2012\/08\/snippet-kalender-des-jahrs-ausgeben\/","title":{"rendered":"Snippet: Kalender des Jahres ausgeben"},"content":{"rendered":"<p>Angeregt durch den <strong>Compact Calendar <\/strong>(<a href=\"http:\/\/davidseah.com\/compact-calendar\/\">http:\/\/davidseah.com\/compact-calendar\/<\/a>) wollte ich etwas \u00e4hnliches in meine Webanwendung einbauen, sodass das Ergebnis tabellenartig wie <a href=\"https:\/\/docs.google.com\/spreadsheet\/ccc?key=0AkyxK00VLnSidEl1SS1sZjZiVlpuRnJIY1JmUW9IRHc#gid=0\">https:\/\/docs.google.com\/spreadsheet\/ccc?key=0AkyxK00VLnSidEl1SS1sZjZiVlpuRnJIY1JmUW9IRHc#gid=0<\/a> formatiert wird.<\/p>\n<pre class=\"csharpcode\">import java.text.DateFormatSymbols;\nimport java.util.*;\n\n<span class=\"kwrd\">public<\/span> <span class=\"kwrd\">class<\/span> PrintCalender\n{\n  <span class=\"kwrd\">public<\/span> <span class=\"kwrd\">static<\/span> <span class=\"kwrd\">class<\/span> CalLine\n  {\n    <span class=\"kwrd\">int<\/span> weekOfYear; \n    <span class=\"kwrd\">int<\/span> month = -1;  <span class=\"rem\">\/\/ 0 &lt;= month &lt;= 11 <\/span>\n    <span class=\"kwrd\">int<\/span>[] day = { -1, -1, -1, -1, -1, -1, -1 }; \n  }\n\n  <span class=\"kwrd\">public<\/span> <span class=\"kwrd\">static<\/span> List&lt;CalLine&gt; calenderOfTheYear( <span class=\"kwrd\">int<\/span> year )\n  {\n    Calendar cal = <span class=\"kwrd\">new<\/span> GregorianCalendar( year, 1, 1 );\n\n    List&lt;CalLine&gt; lines = <span class=\"kwrd\">new<\/span> ArrayList&lt;&gt;();\n    CalLine line = <span class=\"kwrd\">new<\/span> CalLine();\n\n    <span class=\"kwrd\">for<\/span> ( <span class=\"kwrd\">int<\/span> dayOfYear = 1; dayOfYear &lt;= cal.getActualMaximum( Calendar.DAY_OF_YEAR ); dayOfYear++ ) {\n      cal.set( Calendar.DAY_OF_YEAR, dayOfYear );\n      line.weekOfYear = cal.get( Calendar.WEEK_OF_YEAR ); <span class=\"rem\">\/\/ Set several times, thats ok<\/span>\n\n      <span class=\"kwrd\">int<\/span> dayOfMonth = cal.get( Calendar.DAY_OF_MONTH );\n      <span class=\"kwrd\">int<\/span> dayOfWeek  = cal.get( Calendar.DAY_OF_WEEK );\n\n      <span class=\"kwrd\">if<\/span> ( dayOfMonth == 1 )\n        line.month = cal.get( Calendar.MONTH );\n\n      line.day[dayOfWeek - 1] = dayOfMonth;\n\n      <span class=\"kwrd\">if<\/span> ( dayOfWeek == Calendar.SUNDAY ) {\n        lines.add( line );\n        line = <span class=\"kwrd\">new<\/span> CalLine();\n      }\n    }\n    lines.add( line );\n    <span class=\"kwrd\">return<\/span> lines;\n  }\n  \n  <span class=\"kwrd\">public<\/span> <span class=\"kwrd\">static<\/span> <span class=\"kwrd\">void<\/span> main( String[] args )\n  {\n    List&lt;CalLine&gt; lines = calenderOfTheYear( 2012 );\n\n    String[] monthNames = <span class=\"kwrd\">new<\/span> DateFormatSymbols( Locale.GERMANY ).getMonths();\n    System.<span class=\"kwrd\">out<\/span>.println( <span class=\"str\">\"KW        Mo Do Mi Do Fr Sa So\"<\/span> ); <span class=\"rem\">\/\/ to lazy for DateFormatSymbols here...<\/span>\n\n    <span class=\"kwrd\">for<\/span> ( CalLine l : lines ) {\n      String monthStr = (l.month == -1) ? <span class=\"str\">\"   \"<\/span> : monthNames[ l.month ].substring( 0, 3 );\n      <span class=\"rem\">\/\/ Days are Sun, Mon, ..., Sat. Rearange to Mon, ..., Sun<\/span>\n      String s = String.format( <span class=\"str\">\"%2d  %s   %(2d %(2d %(2d %(2d %(2d %(2d %(2d\"<\/span>,\n                                l.weekOfYear, monthStr,\n                                l.day[1], l.day[2], l.day[3], l.day[4], l.day[5], l.day[6], l.day[0] ).replace( <span class=\"str\">\"(1)\"<\/span>, <span class=\"str\">\"  \"<\/span> );\n      System.<span class=\"kwrd\">out<\/span>.println( s );\n    }\n  }\n}<\/pre>\n<style type=\"text\/css\">.csharpcode, .csharpcode pre\n{\n\tfont-size: small;\n\tcolor: black;\n\tfont-family: consolas, \"Courier New\", courier, monospace;\n\tbackground-color: #ffffff;\n\t\/*white-space: pre;*\/\n}\n.csharpcode pre { margin: 0em; }\n.csharpcode .rem { color: #008000; }\n.csharpcode .kwrd { color: #0000ff; }\n.csharpcode .str { color: #006080; }\n.csharpcode .op { color: #0000c0; }\n.csharpcode .preproc { color: #cc6633; }\n.csharpcode .asp { background-color: #ffff00; }\n.csharpcode .html { color: #800000; }\n.csharpcode .attr { color: #ff0000; }\n.csharpcode .alt \n{\n\tbackground-color: #f4f4f4;\n\twidth: 100%;\n\tmargin: 0em;\n}\n.csharpcode .lnum { color: #606060; }\n<\/style>\n<p>Zur Demo gibt eine Textausgabe (mit einem Hack). Das Ergebnis f\u00fcr dieses Jahr:<\/p>\n<pre>kw        mo do mi do fr sa so\n52  jan                      1\n 1         2  3  4  5  6  7  8\n 2         9 10 11 12 13 14 15\n 3        16 17 18 19 20 21 22\n 4        23 24 25 26 27 28 29\n 5  feb   30 31  1  2  3  4  5\n 6         6  7  8  9 10 11 12\n 7        13 14 15 16 17 18 19\n 8        20 21 22 23 24 25 26\n 9  m\u00e4r   27 28 29  1  2  3  4\n10         5  6  7  8  9 10 11\n11        12 13 14 15 16 17 18\n12        19 20 21 22 23 24 25\n13  apr   26 27 28 29 30 31  1\n14         2  3  4  5  6  7  8\n15         9 10 11 12 13 14 15\n16        16 17 18 19 20 21 22\n17        23 24 25 26 27 28 29\n18  mai   30  1  2  3  4  5  6\n19         7  8  9 10 11 12 13\n20        14 15 16 17 18 19 20\n21        21 22 23 24 25 26 27\n22  jun   28 29 30 31  1  2  3\n23         4  5  6  7  8  9 10\n24        11 12 13 14 15 16 17\n25        18 19 20 21 22 23 24\n26  jul   25 26 27 28 29 30  1\n27         2  3  4  5  6  7  8\n28         9 10 11 12 13 14 15\n29        16 17 18 19 20 21 22\n30        23 24 25 26 27 28 29\n31  aug   30 31  1  2  3  4  5\n32         6  7  8  9 10 11 12\n33        13 14 15 16 17 18 19\n34        20 21 22 23 24 25 26\n35  sep   27 28 29 30 31  1  2\n36         3  4  5  6  7  8  9\n37        10 11 12 13 14 15 16\n38        17 18 19 20 21 22 23\n39        24 25 26 27 28 29 30\n40  okt    1  2  3  4  5  6  7\n41         8  9 10 11 12 13 14\n42        15 16 17 18 19 20 21\n43        22 23 24 25 26 27 28\n44  nov   29 30 31  1  2  3  4\n45         5  6  7  8  9 10 11\n46        12 13 14 15 16 17 18\n47        19 20 21 22 23 24 25\n48  dez   26 27 28 29 30  1  2\n49         3  4  5  6  7  8  9\n50        10 11 12 13 14 15 16\n51        17 18 19 20 21 22 23\n52        24 25 26 27 28 29 30\n 1        31                  <\/pre>\n<\/style>\n<pre><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Angeregt durch den Compact Calendar (http:\/\/davidseah.com\/compact-calendar\/) wollte ich etwas \u00e4hnliches in meine Webanwendung einbauen, sodass das Ergebnis tabellenartig wie https:\/\/docs.google.com\/spreadsheet\/ccc?key=0AkyxK00VLnSidEl1SS1sZjZiVlpuRnJIY1JmUW9IRHc#gid=0 formatiert wird. import java.text.DateFormatSymbols; import java.util.*; public class PrintCalender { public static class CalLine { int weekOfYear; int month = -1; \/\/ 0 &lt;= month &lt;= 11 int[] day = { -1, -1, -1, -1, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[68],"tags":[],"class_list":["post-1502","post","type-post","status-publish","format-standard","hentry","category-snippet"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1502","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=1502"}],"version-history":[{"count":3,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1502\/revisions"}],"predecessor-version":[{"id":1508,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1502\/revisions\/1508"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=1502"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=1502"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=1502"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}