47 lines
1.2 KiB
Go
47 lines
1.2 KiB
Go
package utils
|
|
|
|
import (
|
|
"database/sql"
|
|
"time"
|
|
)
|
|
|
|
type timeUtil interface {
|
|
// TimeNowUTC Use it everywhere, when you need current time.
|
|
TimeNowUTC() time.Time
|
|
|
|
// DeletedNullTime returns empty sql.NullTime struct with valid = false.
|
|
DeletedNullTime() sql.NullTime
|
|
|
|
// NullTimeNowUTC returns valid sql.NullTime struct with current time in UTC.
|
|
NullTimeNowUTC() sql.NullTime
|
|
|
|
// NullTimeFromNow converts time.Time to valid sql.NullTime struct.
|
|
NullTimeFromNow(now time.Time) sql.NullTime
|
|
|
|
// ParseTime converts time from string to time.Time in RFC3339 format.
|
|
ParseTime(t string) (time.Time, error)
|
|
}
|
|
|
|
func (h *Handler) TimeNowUTC() time.Time {
|
|
return time.Now().UTC()
|
|
}
|
|
|
|
func (h *Handler) DeletedNullTime() sql.NullTime {
|
|
return sql.NullTime{Time: time.Time{}, Valid: false}
|
|
}
|
|
|
|
func (h *Handler) NullTimeNowUTC() sql.NullTime {
|
|
return sql.NullTime{Time: h.TimeNowUTC(), Valid: true}
|
|
}
|
|
|
|
func (h *Handler) NullTimeFromNow(now time.Time) sql.NullTime {
|
|
return sql.NullTime{Time: now, Valid: true}
|
|
}
|
|
|
|
func (h *Handler) ParseTime(t string) (time.Time, error) {
|
|
timeStr, err := time.Parse(time.RFC3339, t)
|
|
if err != nil {
|
|
return time.Time{}, err
|
|
}
|
|
return timeStr, nil
|
|
}
|