diff --git a/atproto/syntax/datetime.go b/atproto/syntax/datetime.go index 22c23e2d..c3137d1a 100644 --- a/atproto/syntax/datetime.go +++ b/atproto/syntax/datetime.go @@ -63,6 +63,12 @@ func ParseDatetimeLenient(raw string) (Datetime, error) { if strings.HasSuffix(raw, "-00:00") { return ParseDatetime(strings.Replace(raw, "-00:00", "+00:00", 1)) } + if strings.HasSuffix(raw, "-0000") { + return ParseDatetime(strings.Replace(raw, "-0000", "+00:00", 1)) + } + if strings.HasSuffix(raw, "+0000") { + return ParseDatetime(strings.Replace(raw, "+0000", "+00:00", 1)) + } // try adding timezone if it is missing var hasTimezoneRegex = regexp.MustCompile(`^.*(([+-]\d\d:?\d\d)|[a-zA-Z])$`) diff --git a/atproto/syntax/datetime_test.go b/atproto/syntax/datetime_test.go index e9dda367..595840a8 100644 --- a/atproto/syntax/datetime_test.go +++ b/atproto/syntax/datetime_test.go @@ -83,6 +83,9 @@ func TestParseDatetimeLenient(t *testing.T) { "2023-08-27T19:07:00.186173", "1985-04-12T23:20:50.123-00:00", "1985-04-12T23:20:50.123+00:00", + "1985-04-12T23:20:50.123+0000", + "1985-04-12T23:20:50.123-0000", + "2023-11-12T11:20:01+0000", } for _, s := range valid { _, err := ParseDatetimeLenient(s)