diff --git a/date_utils/date_utils.go b/date_utils/date_utils.go index 266755437d7ae3a045339f04cc458121186bd0d7..3d6beaf38ecab56678d848accd8568187fc02a5b 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 +}