go-chart/times.go
2022-01-10 15:52:32 -08:00

46 lines
924 B
Go

package chart
import (
"sort"
"time"
)
// Assert types implement interfaces.
var (
_ Sequence[float64] = (*Times)(nil)
_ sort.Interface = (*Times)(nil)
)
// Times are an array of times.
// It wraps the array with methods that implement `seq.Provider`.
type Times []time.Time
// Array returns the times to an array.
func (t Times) Array() []time.Time {
return []time.Time(t)
}
// Len returns the length of the array.
func (t Times) Len() int {
return len(t)
}
// GetValue returns a value at an index as a time.
func (t Times) GetValue(index int) float64 {
return ToFloat64(t[index])
}
// Swap implements sort.Interface.
func (t Times) Swap(i, j int) {
t[i], t[j] = t[j], t[i]
}
// Less implements sort.Interface.
func (t Times) Less(i, j int) bool {
return t[i].Before(t[j])
}
// ToFloat64 returns a float64 representation of a time.
func ToFloat64(t time.Time) float64 {
return float64(t.UnixNano())
}