mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2026-02-08 01:15:37 +08:00
优化代码/删除不需要的代码
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
10
internal/utils/regexputils/expr.go
Normal file
10
internal/utils/regexputils/expr.go
Normal 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}$`)
|
||||
)
|
||||
19
internal/utils/regexputils/expr_test.go
Normal file
19
internal/utils/regexputils/expr_test.go
Normal 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"))
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user