41 lines
918 B
Go
41 lines
918 B
Go
package timeutil
|
|
|
|
import (
|
|
"time"
|
|
|
|
"google.golang.org/protobuf/types/known/timestamppb"
|
|
)
|
|
|
|
// UnixMilliToTime converts Unix milliseconds to time.Time
|
|
func UnixMilliToTime(ms int64) time.Time {
|
|
return time.Unix(0, ms*int64(time.Millisecond))
|
|
}
|
|
|
|
// TimeToUnixMilli converts time.Time to Unix milliseconds
|
|
func TimeToUnixMilli(t time.Time) int64 {
|
|
return t.UnixMilli()
|
|
}
|
|
|
|
// ProtoToTime converts a protobuf Timestamp to time.Time
|
|
// Returns zero time if timestamp is nil
|
|
func ProtoToTime(ts *timestamppb.Timestamp) time.Time {
|
|
if ts == nil {
|
|
return time.Time{}
|
|
}
|
|
return ts.AsTime()
|
|
}
|
|
|
|
// TimeToProto converts time.Time to protobuf Timestamp
|
|
// Returns nil for zero time
|
|
func TimeToProto(t time.Time) *timestamppb.Timestamp {
|
|
if t.IsZero() {
|
|
return nil
|
|
}
|
|
return timestamppb.New(t)
|
|
}
|
|
|
|
// NowProto returns current time as protobuf Timestamp
|
|
func NowProto() *timestamppb.Timestamp {
|
|
return timestamppb.Now()
|
|
}
|