snapshot
This commit is contained in:
parent
3cb33d48d3
commit
26eaa1d898
76 changed files with 1076 additions and 1717 deletions
105
timeutil.go
Normal file
105
timeutil.go
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
package chart
|
||||
|
||||
import "time"
|
||||
|
||||
// SecondsPerXYZ
|
||||
const (
|
||||
SecondsPerHour = 60 * 60
|
||||
SecondsPerDay = 60 * 60 * 24
|
||||
)
|
||||
|
||||
// TimeMillis returns a duration as a float millis.
|
||||
func TimeMillis(d time.Duration) float64 {
|
||||
return float64(d) / float64(time.Millisecond)
|
||||
}
|
||||
|
||||
// DiffHours returns the difference in hours between two times.
|
||||
func DiffHours(t1, t2 time.Time) (hours int) {
|
||||
t1n := t1.Unix()
|
||||
t2n := t2.Unix()
|
||||
var diff int64
|
||||
if t1n > t2n {
|
||||
diff = t1n - t2n
|
||||
} else {
|
||||
diff = t2n - t1n
|
||||
}
|
||||
return int(diff / (SecondsPerHour))
|
||||
}
|
||||
|
||||
// TimeMin returns the minimum and maximum times in a given range.
|
||||
func TimeMin(times ...time.Time) (min time.Time) {
|
||||
if len(times) == 0 {
|
||||
return
|
||||
}
|
||||
min = times[0]
|
||||
for index := 1; index < len(times); index++ {
|
||||
if times[index].Before(min) {
|
||||
min = times[index]
|
||||
}
|
||||
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// TimeMax returns the minimum and maximum times in a given range.
|
||||
func TimeMax(times ...time.Time) (max time.Time) {
|
||||
if len(times) == 0 {
|
||||
return
|
||||
}
|
||||
max = times[0]
|
||||
|
||||
for index := 1; index < len(times); index++ {
|
||||
if times[index].After(max) {
|
||||
max = times[index]
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// TimeMinMax returns the minimum and maximum times in a given range.
|
||||
func TimeMinMax(times ...time.Time) (min, max time.Time) {
|
||||
if len(times) == 0 {
|
||||
return
|
||||
}
|
||||
min = times[0]
|
||||
max = times[0]
|
||||
|
||||
for index := 1; index < len(times); index++ {
|
||||
if times[index].Before(min) {
|
||||
min = times[index]
|
||||
}
|
||||
if times[index].After(max) {
|
||||
max = times[index]
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// TimeToFloat64 returns a float64 representation of a time.
|
||||
func TimeToFloat64(t time.Time) float64 {
|
||||
return float64(t.UnixNano())
|
||||
}
|
||||
|
||||
// TimeDescending sorts a given list of times ascending, or min to max.
|
||||
type TimeDescending []time.Time
|
||||
|
||||
// Len implements sort.Sorter
|
||||
func (d TimeDescending) Len() int { return len(d) }
|
||||
|
||||
// Swap implements sort.Sorter
|
||||
func (d TimeDescending) Swap(i, j int) { d[i], d[j] = d[j], d[i] }
|
||||
|
||||
// Less implements sort.Sorter
|
||||
func (d TimeDescending) Less(i, j int) bool { return d[i].After(d[j]) }
|
||||
|
||||
// TimeAscending sorts a given list of times ascending, or min to max.
|
||||
type TimeAscending []time.Time
|
||||
|
||||
// Len implements sort.Sorter
|
||||
func (a TimeAscending) Len() int { return len(a) }
|
||||
|
||||
// Swap implements sort.Sorter
|
||||
func (a TimeAscending) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
|
||||
|
||||
// Less implements sort.Sorter
|
||||
func (a TimeAscending) Less(i, j int) bool { return a[i].Before(a[j]) }
|
||||
Loading…
Add table
Add a link
Reference in a new issue