/**
 * @Author Puzzle
 * @Date 2022/5/20 12:54 下午
 **/

package stime

import "time"

func NowWeekDay() string {
	var weekday = [7]string{"七", "一", "二", "三", "四", "五", "六"}
	week := int(time.Now().Weekday())
	return weekday[week]
}

// 获取按年算的周数
func GetYearWeek(t *time.Time) int {
	yearDay := t.YearDay()
	yearFirstDay := t.AddDate(0, 0, -yearDay+1)
	firstDayInWeek := int(yearFirstDay.Weekday())

	//今年第一周有几天
	firstWeekDays := 1
	if firstDayInWeek != 0 {
		firstWeekDays = 7 - firstDayInWeek + 1
	}
	var week int
	if yearDay <= firstWeekDays {
		week = 1
	} else {
		week = (yearDay-firstWeekDays)/7 + 2
	}
	return week
}

// GetWeekDate 获取基准时间范围最最近的某个星期时间
//
//	param baseOn: 基准时间
//	param weekNum: 中国星期数 1~7
//	return *time.Time
func GetWeekDate(baseOn time.Time, weekNum int) *time.Time {
	if baseOn.IsZero() || (weekNum <= 0 || weekNum > 7) {
		return nil
	}
	baseDate := time.Date(baseOn.Year(), baseOn.Month(), baseOn.Day(), 0, 0, 0, 0, Loc.Shanghai())
	var (
		w        = int(baseOn.Weekday())
		weekDate time.Time
	)
	weekDate = baseDate.AddDate(0, 0, weekNum-w)
	return &weekDate
}