internal/util/time.go (32 lines of code) (raw):
package util
import (
"fmt"
"time"
)
// TimeConverter converts between time.Time and string.
type TimeConverter struct{}
// FromString converts string to time.Time.
func (tc *TimeConverter) FromString(timeStr string) time.Time {
timestamp, err := time.Parse(
time.RFC3339, timeStr)
if err != nil {
panic(fmt.Sprintf("Failed to parse time string: %s", timeStr))
}
return timestamp
}
// ToString converts time.Time to string.
func (tc *TimeConverter) ToString(timestamp time.Time) string {
return timestamp.Format(time.RFC3339)
}
// Check time has passed
func HasTimeElapsed(timeToCheckStr string, now time.Time, intervalSec int) bool {
tc := &TimeConverter{}
timeToCheck := tc.FromString(timeToCheckStr)
intervalPassedTime := timeToCheck.Add(time.Duration(int64(intervalSec) * int64(time.Second)))
return now.After(intervalPassedTime)
}
// SetTimestamp sets the current timestamp to the target.
func SetTimestamp(target *string) {
var tc = &TimeConverter{}
var now = time.Now()
*target = tc.ToString(now)
}
func GetTime(timeStr string) time.Time {
var tc TimeConverter
return tc.FromString(timeStr)
}