feat: time trans

This commit is contained in:
Bobo
2025-04-02 14:21:38 +08:00
parent c83b10ca22
commit 8f957a7d29
11 changed files with 145 additions and 103 deletions

View File

@@ -149,3 +149,19 @@ func DurationpbToFloat(duration *durationpb.Duration, timePrecision time.Duratio
secondsWithPrecision := seconds / timePrecision.Seconds()
return &secondsWithPrecision
}
func NumberToDurationpb[T int | int8 | int16 | int32 | int64 | uint | uint8 | uint16 | uint32 | uint64 | float32 | float64](duration *T, timePrecision time.Duration) *durationpb.Duration {
if duration == nil {
return nil
}
return durationpb.New(time.Duration(*duration) * timePrecision)
}
func DurationpbToNumber[T int | int8 | int16 | int32 | int64 | uint | uint8 | uint16 | uint32 | uint64 | float32 | float64](duration *durationpb.Duration, timePrecision time.Duration) *T {
if duration == nil {
return nil
}
seconds := duration.AsDuration().Seconds()
secondsWithPrecision := T(seconds / timePrecision.Seconds())
return &secondsWithPrecision
}

View File

@@ -6,6 +6,7 @@ import (
"time"
"github.com/tx7do/go-utils/trans"
"google.golang.org/protobuf/types/known/durationpb"
)
func TestUnixMilliToStringPtr(t *testing.T) {
@@ -19,17 +20,39 @@ func TestUnixMilliToStringPtr(t *testing.T) {
fmt.Println(*UnixMilliToStringPtr(trans.Int64(1677647946234)))
fmt.Println(*UnixMilliToStringPtr(trans.Int64(1678245350773)))
fmt.Println("START: ", *StringToUnixMilliInt64Ptr(trans.String("2023-03-09 00:00:00")))
fmt.Println("END: ", *StringToUnixMilliInt64Ptr(trans.String("2023-03-09 23:59:59")))
fmt.Println("START: ", *StringToUnixMilliInt64Ptr(trans.Ptr("2023-03-09 00:00:00")))
fmt.Println("END: ", *StringToUnixMilliInt64Ptr(trans.Ptr("2023-03-09 23:59:59")))
fmt.Println(StringTimeToTime(trans.String("2023-03-01 00:00:00")))
fmt.Println(*StringDateToTime(trans.String("2023-03-01")))
fmt.Println(StringTimeToTime(trans.Ptr("2023-03-01 00:00:00")))
fmt.Println(*StringDateToTime(trans.Ptr("2023-03-01")))
fmt.Println(StringTimeToTime(trans.String("2023-03-08 00:00:00")).UnixMilli())
fmt.Println(StringDateToTime(trans.String("2023-03-07")).UnixMilli())
fmt.Println(StringTimeToTime(trans.Ptr("2023-03-08 00:00:00")).UnixMilli())
fmt.Println(StringDateToTime(trans.Ptr("2023-03-07")).UnixMilli())
}
func TestTimeToDateString(t *testing.T) {
fmt.Println(*TimeToTimeString(trans.Time(time.Now())))
fmt.Println(*TimeToDateString(trans.Time(time.Now())))
}
func TestDurationpb(t *testing.T) {
fmt.Println(FloatToDurationpb(trans.Ptr(100.0), time.Nanosecond).String())
fmt.Println(*DurationpbToFloat(durationpb.New(100*time.Nanosecond), time.Nanosecond))
fmt.Println(FloatToDurationpb(trans.Ptr(100.0), time.Second).String())
fmt.Println(*DurationpbToFloat(durationpb.New(100*time.Second), time.Second))
fmt.Println(FloatToDurationpb(trans.Ptr(100.0), time.Minute).String())
fmt.Println(*DurationpbToFloat(durationpb.New(100*time.Minute), time.Minute))
//
fmt.Println(NumberToDurationpb(trans.Ptr(100.0), time.Nanosecond).String())
fmt.Println(*DurationpbToNumber[float64](durationpb.New(100*time.Nanosecond), time.Nanosecond))
fmt.Println(NumberToDurationpb(trans.Ptr(100.0), time.Second).String())
fmt.Println(*DurationpbToNumber[float64](durationpb.New(100*time.Second), time.Second))
fmt.Println(NumberToDurationpb(trans.Ptr(100.0), time.Minute).String())
fmt.Println(*DurationpbToNumber[float64](durationpb.New(100*time.Minute), time.Minute))
}