优化代码/删除不需要的代码

This commit is contained in:
刘祥超
2022-10-14 10:03:29 +08:00
parent 5d4da6cccb
commit b0b6b5984f
42 changed files with 554 additions and 1256 deletions

View File

@@ -1,6 +1,8 @@
package numberutils
import "strconv"
import (
"strconv"
)
func FormatInt64(value int64) string {
return strconv.FormatInt(value, 10)
@@ -39,3 +41,20 @@ func Min[T int | int8 | int16 | int32 | int64 | uint | uint8 | uint16 | uint32 |
}
return min
}
func FloorFloat32(f float32, decimal int) float32 {
if decimal < 0 {
decimal = 0
}
for i := 0; i < decimal; i++ {
f *= 10
}
f = float32(int64(f))
for i := 0; i < decimal; i++ {
f /= 10
}
return f
}

View File

@@ -4,6 +4,7 @@ package numberutils_test
import (
"github.com/TeaOSLab/EdgeAPI/internal/utils/numberutils"
"math"
"testing"
)
@@ -18,3 +19,16 @@ func TestMin(t *testing.T) {
t.Log(numberutils.Min[int32](1, 2, 3))
t.Log(numberutils.Min[float32](1.2, 2.3, 3.4))
}
func TestMaxFloat32(t *testing.T) {
t.Logf("%f", math.MaxFloat32/(1<<100))
}
func TestFloorFloat32(t *testing.T) {
t.Logf("%f", numberutils.FloorFloat32(123.456, -1))
t.Logf("%f", numberutils.FloorFloat32(123.456, 0))
t.Logf("%f, %f", numberutils.FloorFloat32(123.456, 1), 123.456*10)
t.Logf("%f, %f", numberutils.FloorFloat32(123.456, 2), 123.456*10*10)
t.Logf("%f, %f", numberutils.FloorFloat32(123.456, 3), 123.456*10*10*10)
t.Logf("%f, %f", numberutils.FloorFloat32(123.456, 4), 123.456*10*10*10*10)
}

View File

@@ -0,0 +1,10 @@
// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
package regexputils
import "regexp"
var (
YYYYMMDD = regexp.MustCompile(`^\d{8}$`)
YYYYMM = regexp.MustCompile(`^\d{6}$`)
)

View File

@@ -0,0 +1,19 @@
// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
package regexputils_test
import (
"github.com/TeaOSLab/EdgeAPI/internal/utils/regexputils"
"github.com/iwind/TeaGo/assert"
"testing"
)
func TestExpr(t *testing.T) {
var a = assert.NewAssertion(t)
a.IsTrue(regexputils.YYYYMMDD.MatchString("20221011"))
a.IsFalse(regexputils.YYYYMMDD.MatchString("202210"))
a.IsTrue(regexputils.YYYYMM.MatchString("202210"))
a.IsFalse(regexputils.YYYYMM.MatchString("20221011"))
}

View File

@@ -3,6 +3,7 @@ package utils
import (
"fmt"
"github.com/TeaOSLab/EdgeAPI/internal/errors"
"github.com/TeaOSLab/EdgeAPI/internal/utils/regexputils"
"github.com/iwind/TeaGo/lists"
"github.com/iwind/TeaGo/types"
timeutil "github.com/iwind/TeaGo/utils/time"
@@ -25,18 +26,12 @@ type timeDayMinuteRange struct {
// RangeDays 计算日期之间的所有日期格式为YYYYMMDD
func RangeDays(dayFrom string, dayTo string) ([]string, error) {
ok, err := regexp.MatchString(`^\d{8}$`, dayFrom)
if err != nil {
return nil, err
}
var ok = regexputils.YYYYMMDD.MatchString(dayFrom)
if !ok {
return nil, errors.New("invalid 'dayFrom'")
}
ok, err = regexp.MatchString(`^\d{8}$`, dayTo)
if err != nil {
return nil, err
}
ok = regexputils.YYYYMMDD.MatchString(dayTo)
if !ok {
return nil, errors.New("invalid 'dayTo'")
}
@@ -73,18 +68,12 @@ func RangeDays(dayFrom string, dayTo string) ([]string, error) {
// RangeMonths 计算日期之间的所有月份格式为YYYYMM
func RangeMonths(dayFrom string, dayTo string) ([]string, error) {
ok, err := regexp.MatchString(`^\d{8}$`, dayFrom)
if err != nil {
return nil, err
}
var ok = regexputils.YYYYMMDD.MatchString(dayFrom)
if !ok {
return nil, errors.New("invalid 'dayFrom'")
}
ok, err = regexp.MatchString(`^\d{8}$`, dayTo)
if err != nil {
return nil, err
}
ok = regexputils.YYYYMMDD.MatchString(dayTo)
if !ok {
return nil, errors.New("invalid 'dayTo'")
}
@@ -276,3 +265,32 @@ func Range24HourTimes(everyMinutes int32) ([]string, error) {
return RangeTimes("0000", "2359", everyMinutes)
}
// LastDayInMonth 某月的最后一天
// month: YYYYMM
// 返回 YYYYMMDD
func LastDayInMonth(month string) (string, error) {
if !regexputils.YYYYMM.MatchString(month) {
return "", errors.New("invalid month '" + month + "'")
}
var year = types.Int(month[:4])
var monthInt = types.Int(month[4:])
return month + timeutil.Format("t", time.Date(year, time.Month(monthInt), 1, 0, 0, 0, 0, time.Local)), nil
}
// FixMonthMaxDay 修正日期最大值
func FixMonthMaxDay(day string) (string, error) {
if !regexputils.YYYYMMDD.MatchString(day) {
return "", errors.New("invalid day '" + day + "'")
}
maxDay, err := LastDayInMonth(day[:6])
if err != nil {
return "", err
}
if day > maxDay {
return maxDay, nil
}
return day, nil
}

View File

@@ -97,3 +97,27 @@ func TestGroupMinuteRanges(t *testing.T) {
t.Log(minutes)
}
}
func TestLastDayInMonth(t *testing.T) {
t.Log(utils.LastDayInMonth("202209"))
t.Log(utils.LastDayInMonth("202210"))
t.Log(utils.LastDayInMonth("202202"))
}
func TestFixMonthMaxDay(t *testing.T) {
for _, day := range []string{
"20220930",
"20220929",
"20220931",
"20220932",
"20220222",
"20220228",
"20220229",
} {
afterDay, err := utils.FixMonthMaxDay(day)
if err != nil {
t.Fatal(err)
}
t.Log(day, "=>", afterDay)
}
}