不按系统流程看了,直接想什么弄什么,先弄了再系统学习。
面向百度学习
第一次尝试
package main
import (
"fmt"
"strconv"
"time"
)
func main() {
//golang和php中格式化
//语言 年 月 日 时 分 秒 分隔符
//PHP Y m d H i s 自定义
//Golang 2006 01 02 15 04 05 自定义
//例如 获取当前格式化年月日时分秒
t := time.Now()
//times := t.Format("2006-01-02 15:04:05") //格式化格式是 Go语言的诞生时间
times := t.Format("2006-01-02") //格式化格式是 Go语言的诞生时间
fmt.Println("当前时间:", times)
//指定某年某月 或 者获取当月第一天是星期几
year := t.Year()
month := t.Format("01")
monthInt, err := strconv.Atoi(month) //string 转 int
if err != nil {
fmt.Println(err)
}
isWeek := ZellerFunction2Week(year, monthInt, 1)
//打印列头
var head string
// _ golang中的下划线表示忽略变量的意思,也没有产生新的变量,但是后面的表达式依然会被执行。
for k, _ := range weekday {
head += " " + weekday[k]
}
//判断1号开始
headnum := weekdaynum[isWeek]
//判断这个月有多少天
dayNum := getYearMonthToDayNum(year, monthInt)
var body string
for i := 0; i < headnum; i++ {
body += " "
}
body += " 1"
for i := 2; i <= dayNum; i++ {
//int转成string
stringnum := strconv.Itoa(i)
body += " " + stringnum
//判断周六
if (headnum+i)%7 == 0 {
body += "\n"
}
}
fmt.Println(head)
fmt.Println(body)
}
var weekday = [7]string{"周日", "周一", "周二", "周三", "周四", "周五", "周六"}
var weekdaynum = map[string]int{"周日": 0, "周一": 1, "周二": 2, "周三": 3, "周四": 4, "周五": 5, "周六": 6}
// 获取指定时间是周几
func ZellerFunction2Week(year, month, day int) string {
var y, m, c int
if month >= 3 {
m = month
y = year % 100
c = year / 100
} else {
m = month + 12
y = (year - 1) % 100
c = (year - 1) / 100
}
week := y + (y / 4) + (c / 4) - 2*c + ((26 * (m + 1)) / 10) + day - 1
if week < 0 {
week = 7 - (-week)%7
} else {
week = week % 7
}
whinch_week := week
return weekday[whinch_week]
}
// 查询某年某月是多少天
func getYearMonthToDayNum(year, month int) int {
//有31天的月份
day31 := map[int]bool{
1: true,
3: true,
5: true,
7: true,
8: true,
10: true,
12: true,
}
if day31[month] == true {
return 31
}
// 有30天的月份
day30 := map[int]bool{
4: true,
6: true,
9: true,
11: true,
}
if day30[month] == true {
return 30
}
//计算平年还是闰年
if (year%4 == 0 && year%100 != 0) || year%400 == 0 {
// 得出二月天数
return 29
}
// 得出平年二月天数
return 28
}
运行结果
收获:
0.格式化是2006-01-02 15:04:05
1.monthInt, err := strconv.Atoi(month) //string 转 int
2.stringnum := strconv.Itoa(i) //int转成string
3.数组遍历
for k, _ := range weekday {
head += " " + weekday[k]
}
4.var weekday = [7]string{"周日", "周一", "周二", "周三", "周四", "周五", "周六"} //数组声明
5.var weekdaynum = map[string]int{"周日": 0, "周一": 1, "周二": 2, "周三": 3, "周四": 4, "周五": 5, "周六": 6} //字典声明