30 lines
786 B
Go
30 lines
786 B
Go
package parser
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
func ParseTimestamp(str string) (time.Time, error) {
|
|
layouts := []string{
|
|
time.RFC1123, // "Mon, 02 Jan 2006 15:04:05 MST"
|
|
time.RFC1123Z, // "Mon, 02 Jan 2006 15:04:05 -0700"
|
|
time.RFC3339, // "2006-01-02T15:04:05Z07:00"
|
|
time.RFC3339Nano, // "2006-01-02T15:04:05.999999999Z07:00"
|
|
"2006-01-02 15:04:05", // Common SQL format
|
|
"02 Jan 2006 15:04:05", // "02 Jan 2025 15:04:05"
|
|
"02-Jan-2006 15:04:05", // "02-Jan-2025 15:04:05"
|
|
"02/01/2006 15:04:05", // "02/01/2025 15:04:05"
|
|
}
|
|
|
|
var t time.Time
|
|
var err error
|
|
for _, layout := range layouts {
|
|
t, err = time.Parse(layout, str)
|
|
if err == nil {
|
|
return t, nil
|
|
}
|
|
}
|
|
return time.Time{}, fmt.Errorf("unknown timestamp format: %s", str)
|
|
}
|