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
+}