diff --git a/date_utils/date_utils.go b/date_utils/date_utils.go
index 76f4dfc68333df5396a75b239793185da2e08faf..68be30f42eb19c9446038911c492d6ed4c0fb913 100644
--- a/date_utils/date_utils.go
+++ b/date_utils/date_utils.go
@@ -289,6 +289,11 @@ func (t TradingHours) Validate() error {
 	}
 
 	for _, day := range t {
+		if day.StartTime == "" || day.EndTime == "" {
+			// Allow empty trading hours for a day to represent closed
+			continue
+		}
+
 		if !TimeBefore(day.StartTime, day.EndTime) {
 			return errors.Error("Start time must be before end time")
 		}
@@ -336,19 +341,25 @@ func (t TradingHours) String() string {
 
 	rangeStartIndex := 1
 	for i := 1; i < len(t); i++ {
-		startTime, err := time.Parse("15:04", t[i].StartTime)
-		if err != nil {
-			return ""
-		}
+		var times string
 
-		endTime, err := time.Parse("15:04", t[i].EndTime)
-		if err != nil {
-			return ""
-		}
+		if t[i].StartTime != "" && t[i].EndTime != "" {
+			startTime, err := time.Parse("15:04", t[i].StartTime)
+			if err != nil {
+				return ""
+			}
+
+			endTime, err := time.Parse("15:04", t[i].EndTime)
+			if err != nil {
+				return ""
+			}
 
-		times := startTime.Format("3:04pm") + "-" + endTime.Format("3:04pm")
-		if t[i].StartTime == "00:00" && t[i].EndTime == "23:59" {
-			times = "All day"
+			times = startTime.Format("3:04pm") + "-" + endTime.Format("3:04pm")
+			if t[i].StartTime == "00:00" && t[i].EndTime == "23:59" {
+				times = "All day"
+			}
+		} else {
+			times = "Closed"
 		}
 
 		// If we're at the last element or the next day doesn't have the same times, we end the current range