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