mirror of https://github.com/prometheus/prometheus
Julius Volz
12 years ago
8 changed files with 108 additions and 114 deletions
@ -0,0 +1,72 @@
|
||||
// Copyright 2013 Prometheus Team
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package utility |
||||
|
||||
import ( |
||||
"fmt" |
||||
"regexp" |
||||
"strconv" |
||||
"time" |
||||
) |
||||
|
||||
var durationRE = regexp.MustCompile("^([0-9]+)([ywdhms]+)$") |
||||
|
||||
func DurationToString(duration time.Duration) string { |
||||
seconds := int64(duration / time.Second) |
||||
factors := map[string]int64{ |
||||
"y": 60 * 60 * 24 * 365, |
||||
"d": 60 * 60 * 24, |
||||
"h": 60 * 60, |
||||
"m": 60, |
||||
"s": 1, |
||||
} |
||||
unit := "s" |
||||
switch int64(0) { |
||||
case seconds % factors["y"]: |
||||
unit = "y" |
||||
case seconds % factors["d"]: |
||||
unit = "d" |
||||
case seconds % factors["h"]: |
||||
unit = "h" |
||||
case seconds % factors["m"]: |
||||
unit = "m" |
||||
} |
||||
return fmt.Sprintf("%v%v", seconds/factors[unit], unit) |
||||
} |
||||
|
||||
func StringToDuration(durationStr string) (duration time.Duration, err error) { |
||||
matches := durationRE.FindStringSubmatch(durationStr) |
||||
if len(matches) != 3 { |
||||
err = fmt.Errorf("Not a valid duration string: '%v'", durationStr) |
||||
return |
||||
} |
||||
durationSeconds, _ := strconv.Atoi(matches[1]) |
||||
duration = time.Duration(durationSeconds) * time.Second |
||||
unit := matches[2] |
||||
switch unit { |
||||
case "y": |
||||
duration *= 60 * 60 * 24 * 365 |
||||
case "w": |
||||
duration *= 60 * 60 * 24 * 7 |
||||
case "d": |
||||
duration *= 60 * 60 * 24 |
||||
case "h": |
||||
duration *= 60 * 60 |
||||
case "m": |
||||
duration *= 60 |
||||
case "s": |
||||
duration *= 1 |
||||
} |
||||
return |
||||
} |
Loading…
Reference in new issue