* Copyright (c) 2025 Bocloud Technologies Co., Ltd.
* installer is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain n copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
******************************************************************/
package metrics
import (
"strconv"
"time"
"github.com/pkg/errors"
)
const TimeFormat = "2006-01-02 15:04:05"
const DecimalBase = 10
const DefaultTimeRangeYears = 10
const Int64BitSize = 64
const DaysPerYear = 365
const HoursPerDay = 24
func TimeNow() string {
return time.Now().Format(TimeFormat)
}
func TimeNowUnix() string {
return strconv.FormatInt(time.Now().Unix(), DecimalBase)
}
func FormatTime(t time.Time) string {
return t.Format(TimeFormat)
}
func ParseTimeUnix(timestamp string) (time.Time, error) {
i, err := strconv.ParseInt(timestamp, DecimalBase, Int64BitSize)
if err != nil {
return time.Time{}, err
}
return time.Unix(i, 0), nil
}
func ParseTimeFromTo(from, to string) (startTime, endTime time.Time, err error) {
if from == "" {
startTime = time.Now().Add(-DefaultTimeRangeYears * DaysPerYear * HoursPerDay * time.Hour)
} else {
startTime, err = ParseTimeUnix(from)
if err != nil {
err = errors.Errorf("Error parsing start time: %v", err)
return
}
}
if to == "" {
endTime = time.Now()
} else {
endTime, err = ParseTimeUnix(to)
if err != nil {
err = errors.Errorf("Error parsing end time: %v", err)
return
}
}
if startTime.After(endTime) {
err = errors.New("Start time must be before end time")
return
}
return
}