package utils

import (
	"fmt"
	"strconv"
	"time"
)

func SubYearFromNowBefore(t1 time.Time) float32 {
	t2 := time.Now()
	res := float64(SubMonth(t2, t1)) / 12.0
	value, err := strconv.ParseFloat(fmt.Sprintf("%.1f", res), 64)
	if err != nil {
		return 0
	}

	return float32(value)
}

func SubYearFromStartAndEnd(start time.Time,end time.Time) float32 {
	res := float64(SubMonth(end, start)) / 12.0
	value, err := strconv.ParseFloat(fmt.Sprintf("%.1f", res), 64)
	if err != nil {
		return 0
	}

	return float32(value)
}

func SubMonth(t1, t2 time.Time) (month int) {
	y1 := t1.Year()
	y2 := t2.Year()
	m1 := int(t1.Month())
	m2 := int(t2.Month())
	d1 := t1.Day()
	d2 := t2.Day()

	yearInterval := y1 - y2
	// 如果 d1的 月-日 小于 d2的 月-日 那么 yearInterval-- 这样就得到了相差的年数
	if m1 < m2 || (m1 == m2 && d1 < d2) {
		yearInterval--
	}
	// 获取月数差值
	monthInterval := (m1 + 12) - m2

	if d1 < d2 {
		monthInterval--
	}
	monthInterval %= 12
	month = yearInterval*12 + monthInterval
	return
}