this repo has no description
at master 658 B view raw
1package feeds 2 3import ( 4 "time" 5) 6 7func SafeTimestamp(input string) int64 { 8 utcNow := time.Now().UTC() 9 if input == "" { 10 return utcNow.Unix() 11 } 12 var t time.Time 13 var err error 14 layouts := []string{ 15 time.RFC3339, 16 } 17 for _, layout := range layouts { 18 if t, err = time.Parse(layout, input); err == nil { 19 break 20 } 21 } 22 if err != nil { 23 return utcNow.Unix() 24 } 25 if t.Unix() <= 0 { 26 return utcNow.Unix() 27 } else if t.Add(-2*time.Minute).Compare(utcNow) == -1 { 28 // accept as long as parsed time is no more than 2 minutes in the future 29 return t.Unix() 30 } else if t.Compare(utcNow) == 1 { 31 return utcNow.Unix() 32 } else { 33 return utcNow.Unix() 34 } 35}