diff --git a/goextVersion.go b/goextVersion.go index e3195f8..dbdf665 100644 --- a/goextVersion.go +++ b/goextVersion.go @@ -1,5 +1,5 @@ package goext -const GoextVersion = "0.0.589" +const GoextVersion = "0.0.590" -const GoextVersionTimestamp = "2025-07-15T13:46:36+0200" +const GoextVersionTimestamp = "2025-07-15T14:14:22+0200" diff --git a/rfctime/interface.go b/rfctime/interface.go index b8332ce..261219c 100644 --- a/rfctime/interface.go +++ b/rfctime/interface.go @@ -10,7 +10,8 @@ type RFCTime interface { After(u AnyTime) bool Before(u AnyTime) bool - Equal(u AnyTime) bool + + EqualAny(u AnyTime) bool Sub(u AnyTime) time.Duration } @@ -49,45 +50,15 @@ type AnyTime interface { } type RFCDuration interface { - Time() time.Time - Serialize() string - - UnmarshalJSON(bytes []byte) error - MarshalJSON() ([]byte, error) - - MarshalBinary() ([]byte, error) - UnmarshalBinary(data []byte) error - - GobEncode() ([]byte, error) - GobDecode(data []byte) error - - MarshalText() ([]byte, error) - UnmarshalText(data []byte) error - - After(u AnyTime) bool - Before(u AnyTime) bool - Equal(u AnyTime) bool - IsZero() bool - Date() (year int, month time.Month, day int) - Year() int - Month() time.Month - Day() int - Weekday() time.Weekday - ISOWeek() (year, week int) - Clock() (hour, min, sec int) - Hour() int - Minute() int - Second() int - Nanosecond() int - YearDay() int - Sub(u AnyTime) time.Duration - Unix() int64 - UnixMilli() int64 - UnixMicro() int64 - UnixNano() int64 - Format(layout string) string - GoString() string + Hours() float64 + Minutes() float64 + Seconds() float64 + Microseconds() int64 + Milliseconds() int64 + Nanoseconds() int64 String() string + + Duration() time.Duration } func tt(v AnyTime) time.Time { diff --git a/rfctime/rfc3339.go b/rfctime/rfc3339.go index 8ff937c..73934f0 100644 --- a/rfctime/rfc3339.go +++ b/rfctime/rfc3339.go @@ -142,11 +142,12 @@ func (t RFC3339Time) Before(u AnyTime) bool { return t.Time().Before(tt(u)) } -func (t *RFC3339Time) Equal(u AnyTime) bool { - if t == nil && u == nil { - return true - } - if t == nil || u == nil { +func (t RFC3339Time) Equal(u RFC3339Time) bool { + return t.Time().Equal(u.Time()) +} + +func (t RFC3339Time) EqualAny(u AnyTime) bool { + if u == nil { return false } return t.Time().Equal(tt(u)) diff --git a/rfctime/rfc3339Nano.go b/rfctime/rfc3339Nano.go index dc9bd85..e0d6c07 100644 --- a/rfctime/rfc3339Nano.go +++ b/rfctime/rfc3339Nano.go @@ -142,11 +142,12 @@ func (t RFC3339NanoTime) Before(u AnyTime) bool { return t.Time().Before(tt(u)) } -func (t *RFC3339NanoTime) Equal(u AnyTime) bool { - if t == nil && u == nil { - return true - } - if t == nil || u == nil { +func (t RFC3339NanoTime) Equal(u RFC3339NanoTime) bool { + return t.Time().Equal(u.Time()) +} + +func (t RFC3339NanoTime) EqualAny(u AnyTime) bool { + if u == nil { return false } return t.Time().Equal(tt(u)) diff --git a/rfctime/rfc3339Nano_test.go b/rfctime/rfc3339Nano_test.go index fe6fb9e..a2cb03e 100644 --- a/rfctime/rfc3339Nano_test.go +++ b/rfctime/rfc3339Nano_test.go @@ -41,7 +41,7 @@ func TestRoundtrip(t *testing.T) { tst.AssertEqual(t, string(jstr1), string(jstr2)) - if !w1.Value.Equal(&w2.Value) { + if !w1.Value.EqualAny(&w2.Value) { t.Errorf("time differs") } diff --git a/rfctime/seconds.go b/rfctime/seconds.go index fdb6668..076f797 100644 --- a/rfctime/seconds.go +++ b/rfctime/seconds.go @@ -4,11 +4,11 @@ import ( "encoding/json" "errors" "fmt" + "git.blackforestbytes.com/BlackForestBytes/goext/timeext" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson/bsoncodec" "go.mongodb.org/mongo-driver/bson/bsonrw" "go.mongodb.org/mongo-driver/bson/bsontype" - "git.blackforestbytes.com/BlackForestBytes/goext/timeext" "reflect" "time" ) diff --git a/rfctime/unix.go b/rfctime/unix.go index 593792a..21fd5ad 100644 --- a/rfctime/unix.go +++ b/rfctime/unix.go @@ -136,11 +136,12 @@ func (t UnixTime) Before(u AnyTime) bool { return t.Time().Before(tt(u)) } -func (t *UnixTime) Equal(u AnyTime) bool { - if t == nil && u == nil { - return true - } - if t == nil || u == nil { +func (t UnixTime) Equal(u UnixTime) bool { + return t.Time().Equal(u.Time()) +} + +func (t UnixTime) EqualAny(u AnyTime) bool { + if u == nil { return false } return t.Time().Equal(tt(u)) diff --git a/rfctime/unixMilli.go b/rfctime/unixMilli.go index 6b9634d..30a3225 100644 --- a/rfctime/unixMilli.go +++ b/rfctime/unixMilli.go @@ -136,11 +136,12 @@ func (t UnixMilliTime) Before(u AnyTime) bool { return t.Time().Before(tt(u)) } -func (t *UnixMilliTime) Equal(u AnyTime) bool { - if t == nil && u == nil { - return true - } - if t == nil || u == nil { +func (t UnixMilliTime) Equal(u UnixMilliTime) bool { + return t.Time().Equal(u.Time()) +} + +func (t UnixMilliTime) EqualAny(u AnyTime) bool { + if u == nil { return false } return t.Time().Equal(tt(u)) diff --git a/rfctime/unixNano.go b/rfctime/unixNano.go index 72e1683..88ef86f 100644 --- a/rfctime/unixNano.go +++ b/rfctime/unixNano.go @@ -136,11 +136,12 @@ func (t UnixNanoTime) Before(u AnyTime) bool { return t.Time().Before(tt(u)) } -func (t *UnixNanoTime) Equal(u AnyTime) bool { - if t == nil && u == nil { - return true - } - if t == nil || u == nil { +func (t UnixNanoTime) Equal(u UnixNanoTime) bool { + return t.Time().Equal(u.Time()) +} + +func (t UnixNanoTime) EqualAny(u AnyTime) bool { + if u == nil { return false } return t.Time().Equal(tt(u))