Files
alfred-be/alfred/utils/datetime_utils.go
2026-03-08 16:14:42 +05:30

63 lines
1.4 KiB
Go

package utils
import (
"alfred/pkg/log"
"fmt"
"github.com/gorhill/cronexpr"
"go.uber.org/zap"
"strings"
"time"
)
func GetCurrentTimeInMillis() int64 {
timeInIst, err := time.LoadLocation("Asia/Kolkata")
if err != nil {
return 0
}
return time.Now().In(timeInIst).UnixMilli()
}
func GetTimeWithOffsetInMillis(offset time.Duration) int64 {
timeInIst, err := time.LoadLocation("Asia/Kolkata")
if err != nil {
return 0
}
return time.Now().In(timeInIst).Add(offset).UnixMilli()
}
func GetCurrentDate() (int, time.Month, int) {
timeInIst, err := time.LoadLocation("Asia/Kolkata")
if err != nil {
return 0, 0, 0
}
return time.Now().In(timeInIst).Date()
}
func GetDateWithOffset(offset time.Duration) (int, time.Month, int) {
timeInIst, err := time.LoadLocation("Asia/Kolkata")
if err != nil {
return 0, 0, 0
}
return time.Now().In(timeInIst).Add(offset).Date()
}
func NormalizeDate(date string) string {
dateSplits := strings.Split(date, "-")
if len(dateSplits) != 3 {
log.Error("invalid date format", zap.String("date", date))
return EMPTY
}
dateSplits[1] = fmt.Sprintf("%02s", dateSplits[1])
dateSplits[2] = fmt.Sprintf("%02s", dateSplits[2])
return strings.Join(dateSplits, "-")
}
func GetCronTime(cronExpression string) int64 {
// Parse the cron expression
expr, _ := cronexpr.Parse(cronExpression)
diffTime := expr.Next(time.Now()).UnixMilli() - time.Now().UnixMilli()
return diffTime
}