package internal
import (
"fmt"
"time"
)
const (
dateFormat = "2006-01-02"
timeFormat = "15:04:05.999999999"
timestampFormat = "2006-01-02 15:04:05.999999999"
timestamptzFormat = "2006-01-02 15:04:05.999999999-07:00:00"
timestamptzFormat2 = "2006-01-02 15:04:05.999999999-07:00"
timestamptzFormat3 = "2006-01-02 15:04:05.999999999-07"
)
func ParseTime (s string ) (time .Time , error ) {
switch l := len (s ); {
case l < len ("15:04:05" ):
return time .Time {}, fmt .Errorf ("bun: can't parse time=%q" , s )
case l <= len (timeFormat ):
if s [2 ] == ':' {
return time .ParseInLocation (timeFormat , s , time .UTC )
}
return time .ParseInLocation (dateFormat , s , time .UTC )
default :
if s [10 ] == 'T' {
return time .Parse (time .RFC3339Nano , s )
}
if c := s [l -9 ]; c == '+' || c == '-' {
return time .Parse (timestamptzFormat , s )
}
if c := s [l -6 ]; c == '+' || c == '-' {
return time .Parse (timestamptzFormat2 , s )
}
if c := s [l -3 ]; c == '+' || c == '-' {
return time .Parse (timestamptzFormat3 , s )
}
return time .ParseInLocation (timestampFormat , s , time .UTC )
}
}
The pages are generated with Golds v0.3.6 . (GOOS=darwin GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds .