Golang : Time slice or date sort and reverse sort example
Sorting time.Time
type and dates is pretty straight forward in Golang. Just curious why it is not included in the sort
package.
Here’s an example of sorting slice of time.Time
in Go.
package main
import (
"fmt"
"sort"
"time"
)
type timeSlice []time.Time
func (s timeSlice) Less(i, j int) bool { return s[i].Before(s[j]) }
func (s timeSlice) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
func (s timeSlice) Len() int { return len(s) }
var past = time.Date(2010, time.May, 18, 23, 0, 0, 0, time.Now().Location())
var present = time.Now()
var future = time.Now().Add(24 * time.Hour)
var dateSlice timeSlice = []time.Time{present, future, past}
func main() {
fmt.Println("Past : ", past)
fmt.Println("Present : ", present)
fmt.Println("Future : ", future)
fmt.Println("Before sorting : ", dateSlice)
sort.Sort(dateSlice)
fmt.Println("After sorting : ", dateSlice)
sort.Sort(sort.Reverse(dateSlice))
fmt.Println("After REVERSE sorting : ", dateSlice)
}
Sample output :
Past : 2010-05-18 23:00:00 +0800 SGT
Present : 2015-08-04 10:57:34.019368428 +0800 SGT
Future : 2015-08-05 10:57:34.019368476 +0800 SGT
Before sorting : [2015-08-04 10:57:34.019368428 +0800 SGT 2015-08-05 10:57:34.019368476 +0800 SGT 2010-05-18 23:00:00 +0800 SGT]
After sorting : [2010-05-18 23:00:00 +0800 SGT 2015-08-04 10:57:34.019368428 +0800 SGT 2015-08-05 10:57:34.019368476 +0800 SGT]
After REVERSE sorting : [2015-08-05 10:57:34.019368476 +0800 SGT 2015-08-04 10:57:34.019368428 +0800 SGT 2010-05-18 23:00:00 +0800 SGT]
Reference :
http://grokbase.com/t/gg/golang-nuts/136mm2bf2m/go-nuts-sort-timeslice
https://www.socketloop.com/tutorials/golang-sort-and-reverse-sort-a-slice-of-strings
See also : Golang : Sort and reverse sort a slice of strings
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+18.3k Golang : Convert(cast) bytes.Buffer or bytes.NewBuffer type to io.Reader
+28.2k Golang : Login(Authenticate) with Facebook example
+6k Golang : Get Alexa ranking data example
+35.3k Golang : Convert(cast) int64 to string
+5.9k Golang : constant 20013 overflows byte error message
+6k Linux : How to fix Brother HL-1110 printing blank page problem
+26.6k Get file path of temporary file in Go
+3.8k Golang : How to pass data between controllers with JSON Web Token
+11k Golang : How to parse plain email text and process email header?
+10.4k Golang : Byte format example
+12k Golang : Calculate elapsed years or months since a date
+6.9k Golang : How to feed or take banana with Gorilla Web Toolkit Session package