package utils

import (
	"time"

	"github.com/robfig/cron/v3"
)

// GetNextCronTime 根据传入的 Cron 表达式计算下一次执行的时间。
// 它使用兼容大多数 Cron 实现的标准解析器。
// 如果 Cron 表达式无效，它将返回一个错误。
func GetNextCronTime(cronExpression string) (time.Time, error) {
	// cron.ParseStandard() 返回一个支持标准5位或6位（带秒）格式的解析器。
	schedule, err := cron.ParseStandard(cronExpression)
	if err != nil {
		return time.Time{}, err // 返回零值时间和错误
	}

	// 从当前时间计算下一次执行时间
	nextTime := schedule.Next(time.Now())
	return nextTime, nil
}
