Calendar: Difference between revisions
Content deleted Content added
No edit summary |
|||
Line 2,898: | Line 2,898: | ||
30 |
30 |
||
</pre> |
</pre> |
||
=={{header|Go}}== |
|||
<lang Go> |
|||
package main |
|||
import ( |
|||
"fmt" |
|||
"time" |
|||
) |
|||
const pageWidth = 80 |
|||
func main() { |
|||
printCal(1969) |
|||
} |
|||
func printCal(year int) { |
|||
thisDate := time.Date(year, 1, 1, 1, 1, 1, 1, time.UTC) |
|||
var ( |
|||
dayArr [12][7][6]int // month, weekday, week |
|||
month, lastMonth time.Month |
|||
weekInMonth, dayInMonth int |
|||
) |
|||
for thisDate.Year() == year { |
|||
if month = thisDate.Month(); month != lastMonth { |
|||
weekInMonth = 0 |
|||
dayInMonth = 1 |
|||
} |
|||
weekday := thisDate.Weekday() |
|||
if weekday == 0 && dayInMonth > 1 { |
|||
weekInMonth++ |
|||
} |
|||
dayArr[int(month)-1][weekday][weekInMonth] = thisDate.Day() |
|||
lastMonth = month |
|||
dayInMonth++ |
|||
thisDate = thisDate.Add(time.Hour * 24) |
|||
} |
|||
centre := fmt.Sprintf("%d", pageWidth/2) |
|||
fmt.Printf("%"+centre+"s\n\n", "[SNOOPY]") |
|||
centre = fmt.Sprintf("%d", pageWidth/2-2) |
|||
fmt.Printf("%"+centre+"d\n\n", year) |
|||
months := [12]string{ |
|||
" January ", " February", " March ", " April ", |
|||
" May ", " June ", " July ", " August ", |
|||
"September", " October ", " November", " December"} |
|||
days := [7]string{"Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"} |
|||
for qtr := 0; qtr < 4; qtr++ { |
|||
for monthInQtr := 0; monthInQtr < 3; monthInQtr++ { // Month names |
|||
fmt.Printf(" %s ", months[qtr*3+monthInQtr]) |
|||
} |
|||
fmt.Println() |
|||
for monthInQtr := 0; monthInQtr < 3; monthInQtr++ { // Day names |
|||
for day := 0; day < 7; day++ { |
|||
fmt.Printf(" %s", days[day]) |
|||
} |
|||
fmt.Printf(" ") |
|||
} |
|||
fmt.Println() |
|||
for weekInMonth = 0; weekInMonth < 6; weekInMonth++ { |
|||
for monthInQtr := 0; monthInQtr < 3; monthInQtr++ { |
|||
for day := 0; day < 7; day++ { |
|||
if dayArr[qtr*3+monthInQtr][day][weekInMonth] == 0 { |
|||
fmt.Printf(" ") |
|||
} else { |
|||
fmt.Printf("%3d", dayArr[qtr*3+monthInQtr][day][weekInMonth]) |
|||
} |
|||
} |
|||
fmt.Printf(" ") |
|||
} |
|||
fmt.Println() |
|||
} |
|||
fmt.Println() |
|||
} |
|||
} |
|||
</lang> |
|||
Output: |
|||
<pre> [SNOOPY] |
|||
1969 |
|||
January February March |
|||
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa |
|||
1 2 3 4 1 1 |
|||
5 6 7 8 9 10 11 2 3 4 5 6 7 8 2 3 4 5 6 7 8 |
|||
12 13 14 15 16 17 18 9 10 11 12 13 14 15 9 10 11 12 13 14 15 |
|||
19 20 21 22 23 24 25 16 17 18 19 20 21 22 16 17 18 19 20 21 22 |
|||
26 27 28 29 30 31 23 24 25 26 27 28 23 24 25 26 27 28 29 |
|||
30 31 |
|||
April May June |
|||
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa |
|||
1 2 3 4 5 1 2 3 1 2 3 4 5 6 7 |
|||
6 7 8 9 10 11 12 4 5 6 7 8 9 10 8 9 10 11 12 13 14 |
|||
13 14 15 16 17 18 19 11 12 13 14 15 16 17 15 16 17 18 19 20 21 |
|||
20 21 22 23 24 25 26 18 19 20 21 22 23 24 22 23 24 25 26 27 28 |
|||
27 28 29 30 25 26 27 28 29 30 31 29 30 |
|||
July August September |
|||
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa |
|||
1 2 3 4 5 1 2 1 2 3 4 5 6 |
|||
6 7 8 9 10 11 12 3 4 5 6 7 8 9 7 8 9 10 11 12 13 |
|||
13 14 15 16 17 18 19 10 11 12 13 14 15 16 14 15 16 17 18 19 20 |
|||
20 21 22 23 24 25 26 17 18 19 20 21 22 23 21 22 23 24 25 26 27 |
|||
27 28 29 30 31 24 25 26 27 28 29 30 28 29 30 |
|||
31 |
|||
October November December |
|||
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa |
|||
1 2 3 4 1 1 2 3 4 5 6 |
|||
5 6 7 8 9 10 11 2 3 4 5 6 7 8 7 8 9 10 11 12 13 |
|||
12 13 14 15 16 17 18 9 10 11 12 13 14 15 14 15 16 17 18 19 20 |
|||
19 20 21 22 23 24 25 16 17 18 19 20 21 22 21 22 23 24 25 26 27 |
|||
26 27 28 29 30 31 23 24 25 26 27 28 29 28 29 30 31 |
|||
30 |
|||
</pre> |
|||
=={{header|Haskell}}== |
=={{header|Haskell}}== |
||
<lang Haskell>import qualified Data.Text as T |
<lang Haskell>import qualified Data.Text as T |