Comment detail

年間カレンダー (Nested Flatten)
せっかくJAVAのクラスを使っているので多言語対応で。

JAPAN
=================================
2007/1
  日  月  火  水  木  金  土
       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

US
=================================
2007/1
  Sun  Mon  Tue  Wed  Thu  Fri  Sat
         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

CHINA
=================================
2007/1
  星期日  星期一  星期二  星期三  星期四  星期五  星期六
               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


 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
import java.text.{DateFormatSymbols, SimpleDateFormat}
import java.util.{Date, Locale}

object YearCalendar {
  import java.util.Calendar._
  def mkString(n:int, s:String) = List.make(n, s).mkString
  def print(year:int):unit = print(year, Locale.getDefault)
  def print(year:int, locale:Locale):unit = {
    val ws   = (new DateFormatSymbols(locale)).getShortWeekdays mkString "  "
    val format = (new SimpleDateFormat("dd", locale)).format _:Date => String
    val wwidth = ws.split("  ")(1).getBytes.size
    val cal = getInstance(locale)

    (0 to 11).foreach { month => 
      println(year+"/"+(month+1)+"\n"+ws)
      var n = {cal.set(year,month,1); cal}.get(DAY_OF_WEEK)
      Console.print(mkString((n-1)*(wwidth+2), " "))
      do {
        Console.print(mkString(wwidth, " ")+format(cal.getTime).replaceFirst("^0", " "))
        if(n == 7){ println(""); n = 0 }
      }while({n = n +1;cal.add(DATE, 1);cal.get(MONTH) == month})
      
      println("\n")
    }
  }
}

YearCalendar print 2007
YearCalendar.print(2007, Locale.US)
YearCalendar.print(2007, Locale.CHINA)

Index

Feed

Other

Link

Pathtraq

loading...