fox
zhangqian
2024-05-07 7d06c6472f1acea6b2e49e7b8837bf555e94e219
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package timex
 
import (
    "time"
)
 
func StringToTime(timeStr string) (time.Time, error) {
    return time.ParseInLocation("2006-01-02 15:04:05", timeStr, time.Local)
}
 
func StringToTime2(timeStr string) (time.Time, error) {
    return time.ParseInLocation("2006-01-02", timeStr, time.Local)
}
 
func StringToTime3(timeStr string) (time.Time, error) {
    return time.ParseInLocation("2006-01-02 15:04", timeStr, time.Local)
}
 
func StringToClock(timeStr string) (time.Time, error) {
    return time.ParseInLocation("15:04", timeStr, time.Local)
}
 
func TimeToString(time time.Time) string {
    return time.Format("2006-01-02 15:04:05")
}
 
func TimeToString2(time time.Time) string {
    return time.Format("2006-01-02")
}
 
func TimeToString3(time time.Time) string {
    return time.Format("15:04")
}
 
func UnixTimeToString(_t int64) string {
    return time.Unix(_t, 0).In(time.Local).Format("2006-01-02 15:04:05")
}
func UnixTimeToDate(_t int64) string {
    return time.Unix(_t, 0).In(time.Local).Format("2006-01-02")
}
 
func DayStartTime(_t int64) int64 {
    l := time.Unix(_t, 0).In(time.Local)
    k := time.Date(l.Year(), l.Month(), l.Day(), 0, 0, 0, 0, time.Local).Unix()
    return k
}
 
func DayStartTimeDateStr(_t int64) string {
    l := time.Unix(_t, 0).In(time.Local)
    k := time.Date(l.Year(), l.Month(), l.Day(), 0, 0, 0, 0, time.Local)
    return TimeToString2(k)
}
 
const timeLayout = "2006-01-02 15:04:05"
 
func GetCurrentTime() string {
    return time.Now().Format(timeLayout)
}
 
func GetDate(year int, month time.Month) int {
    day := 0
    if month == time.February {
        if (year%4 == 0 && year%100 != 0) || year%400 == 0 {
            day = 29
        } else {
            day = 28
        }
    } else {
        if month == time.January || month == time.March || month == time.May || month == time.July ||
            month == time.August || month == time.October || month == time.December {
            day = 31
        } else {
            day = 30
        }
    }
    return day
}
 
// 获取一个月内的所有星期
func GetWeeksOfMonth(year int, month time.Month) [][]time.Time {
    firstDay := time.Date(year, month, 1, 0, 0, 0, 0, time.Local)
    lastDay := firstDay.AddDate(0, 1, -1) // 下一个月的第一天减一,得到本月的最后一天
 
    weeks := make([][]time.Time, 0)
    currentWeek := make([]time.Time, 0)
    current := firstDay
 
    for !current.After(lastDay) {
        currentWeek = append(currentWeek, current)
        current = current.AddDate(0, 0, 1) // 增加一天
 
        // 如果当前周已经满了7天,或者已经到了月的最后一天,则保存这一周
        if len(currentWeek) == 7 || current.After(lastDay) {
            weeks = append(weeks, currentWeek)
            currentWeek = make([]time.Time, 0) // 重置当前周
        }
    }
 
    return weeks
}