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 }