From 41f20fa5114bcda63b4c961f7d0fbd64f82b1b46 Mon Sep 17 00:00:00 2001 From: jano3 <jano@uafrica.com> Date: Fri, 17 Dec 2021 16:32:58 +0200 Subject: [PATCH] added function to parse date-time or date only time strings --- date_utils/date_utils.go | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/date_utils/date_utils.go b/date_utils/date_utils.go index 2667554..3d6beaf 100644 --- a/date_utils/date_utils.go +++ b/date_utils/date_utils.go @@ -17,6 +17,15 @@ func DateLayoutYearMonthDayTimeTZ() string { return layout } +func DateLayoutYearMonthDayTimeMillisecondTZ() string { + layout := "2006-01-02T15:04:05.000Z" + return layout +} + +func DateLayoutDB() string { + return "2006-01-02 15:04:05.000000-07" +} + func DateLayoutYearMonthDayTimeTimezone() string { layout := "2006-01-02 15:04:05-07:00" return layout @@ -58,11 +67,11 @@ func DateLayoutTrimmed() string { } func DateDBFormattedString(date time.Time) string { - return date.Format("2006-01-02 15:04:05.000000-07") + return date.Format(DateLayoutDB()) } func DateDBFormattedStringDateOnly(date time.Time) string { - return date.Format("2006-01-02") + return date.Format(DateLayoutYearMonthDay()) } func CurrentLocation() *time.Location { @@ -116,3 +125,14 @@ func ConvertToNoDateTimeString(timeString *string) (*string, error) { formattedTime := parsedTime.Format("15:04") return &formattedTime, nil } + +// ParseTimeString attempts to parse the string as the default date-time format, or as a date only format +func ParseTimeString(timeString string) (time.Time, error) { + // Try using the default format + parsedTime, err := time.Parse(DateLayoutYearMonthDayTimeMillisecondTZ(), timeString) + if err != nil { + // Try using date only format + parsedTime, err = time.Parse(DateLayoutYearMonthDay(), timeString) + } + return parsedTime, err +} -- GitLab