1 Star 1 Fork 0

tym_hmm/timer-task

Create your Gitee Account
Explore and code with more than 14 million developers,Free private repositories !:)
Sign up
文件
Clone or Download
TimeHelper.go 6.16 KB
Copy Edit Raw Blame History
天蝎儿 authored 2021-11-24 19:37 +08:00 . edit
package TimerTask
import (
"fmt"
"math"
"strings"
"time"
)
const (
ANSIC = "Mon Jan _2 15:04:05 2006"
UnixDate = "Mon Jan _2 15:04:05 MST 2006"
RubyDate = "Mon Jan 02 15:04:05 -0700 2006"
RFC822 = "02 Jan 06 15:04 MST"
RFC822Z = "02 Jan 06 15:04 -0700" // RFC822 with numeric zone
RFC850 = "Monday, 02-Jan-06 15:04:05 MST"
RFC1123 = "Mon, 02 Jan 2006 15:04:05 MST"
RFC1123Z = "Mon, 02 Jan 2006 15:04:05 -0700" // RFC1123 with numeric zone
RFC3339 = "2006-01-02T15:04:05Z07:00"
RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00"
Kitchen = "3:04PM"
Stamp = "Jan _2 15:04:05"
StampMilli = "Jan _2 15:04:05.000"
StampMicro = "Jan _2 15:04:05.000000"
StampNano = "Jan _2 15:04:05.000000000"
UTFALL_SECOND = "2006-01-02 15:04:05"
UTFALL_MINUTE = "2006-01-02 15:04"
UTFALL_HOUR = "2006-01-02 15"
UTFALL_DATE = "2006-01-02"
HOUR = "15"
)
type TimeHelper struct {
time time.Time
}
var cstZone = time.FixedZone("CST", 8*3600)
type TimeWeek struct {
Year int
Month int
Weekday int
}
func NewTime(time time.Time) *TimeHelper {
return &TimeHelper{time: time}
}
func (t *TimeHelper) GetYear() int {
return t.time.Year()
}
func (t *TimeHelper) GetMonth() int {
return int(t.time.Month())
}
func (t *TimeHelper) GetDay() int {
return t.time.Day()
}
func (t *TimeHelper) GetHour() int {
return t.time.Hour()
}
func (t *TimeHelper) GetMinute() int {
return t.time.Minute()
}
func (t *TimeHelper) GetSecond() int {
return t.time.Second()
}
func (t *TimeHelper) GetWeekDay() *TimeWeek {
return t.WeekByDate(t.time)
}
func (t *TimeHelper) ToAll() string {
return t.time.Format(UTFALL_SECOND)
}
func (t *TimeHelper) ToDate() string {
return t.time.Format(UTFALL_DATE)
}
func (t *TimeHelper) WeekByDate(time time.Time) *TimeWeek {
yearDay := time.YearDay()
yearFirstDay := time.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
}
weekDay := &TimeWeek{
Year: time.Year(),
Month: int(time.Month()),
Weekday: week,
}
return weekDay
}
func GetNowTime() time.Time {
return time.Now().In(cstZone)
}
func GetNowTimeStr() string {
return NewTime(GetNowTime()).ToAll()
}
func GetNowTimeDate() string {
return NewTime(GetNowTime()).ToDate()
}
func GetArbitrarilyTimeStr(increment time.Duration) string {
return time.Now().Add(increment).Format(UTFALL_SECOND)
}
func TimePare(timeStr string) (time.Time, error) {
return time.ParseInLocation(UTFALL_SECOND, timeStr, cstZone)
}
/**
时间过去计算
解析字符串日期格式 :Y-m-d H:i:s
*/
func OverFormatTime(formatTime string) string {
if strings.Trim(formatTime, " ") == "" {
return ""
}
timeLong, err := TimePare(formatTime)
if err != nil {
return ""
}
var timeOverFormat string
nowTime := GetNowTime()
diffTime := nowTime.Sub(timeLong).Seconds()
if diffTime < 60 {
timeOverFormat = "刚刚"
} else if diffTime < 3600 {
min := int64(math.Floor(diffTime / 60))
timeOverFormat = fmt.Sprintf("%d分钟前", min)
} else if diffTime < 86400 {
min := int64(math.Floor(diffTime / 3600))
timeOverFormat = fmt.Sprintf("%d小时前", min)
} else if diffTime < 864003 {
min := int64(math.Floor(diffTime / 86400))
if min == 1 {
timeOverFormat = "昨天"
} else {
timeOverFormat = "前天"
}
} else {
timeOverFormat = formatTime
}
return timeOverFormat
}
/**
GetBetweenDates 根据开始日期和结束日期计算出时间段内所有日期
参数为日期格式,如:2020-01-01
*/
func GetBetweenDates(sdate string, edate string) []string {
d := []string{}
timeFormatTpl := UTFALL_SECOND
if len(timeFormatTpl) != len(sdate) {
timeFormatTpl = timeFormatTpl[0:len(sdate)]
}
date, err := time.Parse(timeFormatTpl, sdate)
if err != nil {
// 时间解析,异常
return d
}
date2, err := time.Parse(timeFormatTpl, edate)
if err != nil {
// 时间解析,异常
return d
}
if date2.Before(date) {
// 如果结束时间小于开始时间,异常
return d
}
// 输出日期格式固定
timeFormatTpl = UTFALL_DATE
date2Str := date2.Format(timeFormatTpl)
d = append(d, date.Format(timeFormatTpl))
for {
date = date.AddDate(0, 0, 1)
dateStr := date.Format(timeFormatTpl)
d = append(d, dateStr)
if dateStr == date2Str {
break
}
}
return d
}
/**
GetMonthStartAndEnd 获取月份的第一天和最后一天
*/
func GetMonthStartAndEnd() (string, string) {
year, month, _ := time.Now().Date()
thisMonth := time.Date(year, month, 1, 0, 0, 0, 0, time.Local)
start := thisMonth.AddDate(0, 0, 0).Format(UTFALL_DATE)
end := thisMonth.AddDate(0, 1, -1).Format(UTFALL_DATE)
return start, end
}
/**
获取上月开始日期和结束日期
*/
func GetLastMonthStartAndEnd() (string, string) {
year, month, _ := time.Now().Date()
thisMonth := time.Date(year, month, 1, 0, 0, 0, 0, time.Local)
start := thisMonth.AddDate(0, -1, 0).Format(UTFALL_DATE)
end := thisMonth.AddDate(0, 0, -1).Format(UTFALL_DATE)
return start, end
}
/**
获取过去7天日期
*/
func GetLastSevenDates() []string {
var chartKey []string
for i := 0; i < 7; i++ {
timeStr := time.Now().AddDate(0, 0, -i).Format(UTFALL_DATE)
chartKey = append(chartKey, timeStr)
}
return chartKey
}
func GetNowDayTimeStr() string {
return time.Now().Format(UTFALL_DATE)
}
func GetNowDayTimeStrUnderline() string {
return time.Now().Format("2006_01_02")
}
func GetLastDayTimeStrUnderline() string {
year, month, day := time.Now().Date()
thisMonth := time.Date(year, month, day, 0, 0, 0, 0, time.Local)
return thisMonth.AddDate(0, 0, -1).Format("2006_01_02")
}
func GeTomorrowTimeStrUnderline() string {
year, month, day := time.Now().Date()
thisMonth := time.Date(year, month, day, 0, 0, 0, 0, time.Local)
return thisMonth.AddDate(0, 0, +1).Format("2006_01_02")
}
/**
通过时间字符串获取当前小时
*/
func ByTimeStrGetHour(timeStr string) (string, error) {
pare, err := TimePare(timeStr)
if err != nil {
return "", err
}
hour := time.Unix(pare.Unix(), 0).Format(HOUR)
return hour,nil
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/tym_hmm/timer-task.git
git@gitee.com:tym_hmm/timer-task.git
tym_hmm
timer-task
timer-task
v1.1.8

Search