June 2018 Update
This commit is contained in:
parent
ba8067c3b7
commit
22f33d4004
5278 changed files with 84726 additions and 14379 deletions
71
Task/Calendar/Go/calendar.go
Normal file
71
Task/Calendar/Go/calendar.go
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
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()
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue