Check for zero time instant in TimeStamp.IsZero() (#22171) (#22172)

- Backport of #22171
- Currently, the 'IsZero' function for 'TimeStamp' just checks if the
unix time is zero, which is not the behavior of 'Time.IsZero()', but
Gitea is using this method in accordance with the behavior of
'Time.IsZero()'.
  - Adds a new condition to check for the zero time instant.
- Fixes a bug where non-expiring GPG keys where shown as they expired on
Jan 01, 0001.
  - Related https://codeberg.org/Codeberg/Community/issues/791
pull/22200/head
Gusted 2 years ago committed by GitHub
parent 72524adf3f
commit 145e11bc39
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 9
      modules/timeutil/timestamp.go

@ -13,8 +13,13 @@ import (
// TimeStamp defines a timestamp // TimeStamp defines a timestamp
type TimeStamp int64 type TimeStamp int64
var (
// mock is NOT concurrency-safe!! // mock is NOT concurrency-safe!!
var mock time.Time mock time.Time
// Used for IsZero, to check if timestamp is the zero time instant.
timeZeroUnix = time.Time{}.Unix()
)
// Set sets the time to a mocked time.Time // Set sets the time to a mocked time.Time
func Set(now time.Time) { func Set(now time.Time) {
@ -103,5 +108,5 @@ func (ts TimeStamp) FormatDate() string {
// IsZero is zero time // IsZero is zero time
func (ts TimeStamp) IsZero() bool { func (ts TimeStamp) IsZero() bool {
return int64(ts) == 0 return int64(ts) == 0 || int64(ts) == timeZeroUnix
} }

Loading…
Cancel
Save