diff --git a/app/hdl/hdl_points_center.go b/app/hdl/hdl_points_center.go index acb67cc..37e0e5b 100644 --- a/app/hdl/hdl_points_center.go +++ b/app/hdl/hdl_points_center.go @@ -352,12 +352,12 @@ func GetPriceCurve(c *gin.Context) { var sql = fmt.Sprintf("SELECT price,date FROM `egg_energy_price` WHERE HOUR = 23 AND DATE >= \"%s\" AND DATE != \"%s\" ORDER BY DATE ASC ", date, now.Format("2006-01-02")) results, _ := db.Db.QueryString(sql) for _, v := range results { - tmpDate := utils.TimeParseStd(v["date"]) + tmpDate := utils.TimeParseDateStd(v["date"]) yData = append(yData, v["price"]) xData = append(xData, tmpDate.Format("01-02")) } yData = append(yData, m.Price) - tmpDate := utils.TimeParseStd(m.Date) + tmpDate := utils.TimeParseDateStd(m.Date) xData = append(xData, tmpDate.Format("01-02")) break case "2": @@ -372,11 +372,11 @@ func GetPriceCurve(c *gin.Context) { // continue //} yData = append(yData, results[0]["price"]) - xData = append(xData, results[0]["hour"]+":00") + xData = append(xData, results[0]["date"]+" "+results[0]["hour"]+":00") } } yData = append(yData, m.Price) - xData = append(xData, m.Hour+":00") + xData = append(xData, m.Date+" "+m.Hour+":00") break case "3": var nums = 29 @@ -386,14 +386,14 @@ func GetPriceCurve(c *gin.Context) { sql = fmt.Sprintf(sql, date) results, _ := db.Db.QueryString(sql) if results != nil { - tmpDate := utils.TimeParseStd(results[0]["date"]) + year, week, _, _ := utils.GetWeekInfoByDate(results[0]["date"]) yData = append(yData, results[0]["price"]) - xData = append(xData, tmpDate.Format("01-02")) + xData = append(xData, fmt.Sprintf("%s年%s周", year, week)) } } yData = append(yData, m.Price) - tmpDate := utils.TimeParseStd(m.Date) - xData = append(xData, tmpDate.Format("01-02")) + year, week, _, _ := utils.GetWeekInfoByDate(m.Date) + xData = append(xData, fmt.Sprintf("%s年%s周", year, week)) break } diff --git a/app/utils/time.go b/app/utils/time.go index f3395e6..54c8b6e 100644 --- a/app/utils/time.go +++ b/app/utils/time.go @@ -71,6 +71,11 @@ func TimeParseStd(src string) time.Time { return t } +func TimeParseDateStd(src string) time.Time { + t, _ := TimeParse("2006-01-02", src) + return t +} + func TimeStdParseUnix(src string) int64 { t, err := TimeParse("2006-01-02 15:04:05", src) if err != nil { @@ -237,3 +242,19 @@ func GetStartOfWeek(t time.Time) time.Time { func GetZeroTime(d time.Time) time.Time { return time.Date(d.Year(), d.Month(), d.Day(), 0, 0, 0, 0, d.Location()) } + +// GetWeekInfoByDate 获取周数、开始时间、结束时间 +func GetWeekInfoByDate(dateStr string) (string, string, string, string) { + date := TimeParseDateStd(dateStr) + year, week := date.ISOWeek() + location, _ := time.LoadLocation("Asia/Shanghai") + // 计算给定年份1月1日是星期几 + startOfYear := time.Date(year, time.January, 1, 0, 0, 0, 0, location) + daysOffset := int(startOfYear.Weekday()) - int(time.Monday) + 1 + // 计算给定年份的第一周的开始日期 + firstWeekStart := startOfYear.AddDate(0, 0, -daysOffset+1) + // 计算给定周的开始日期 + weekStart := firstWeekStart.AddDate(0, 0, (week-1)*7) + weekEnd := weekStart.AddDate(0, 0, 6) + return IntToStr(year), IntToStr(week), weekStart.Format("2006-01-02"), weekEnd.Format("2006-01-02") +}