diff --git a/office_hours.tokens.inc b/office_hours.tokens.inc
index 8fde82e..57c90bf 100644
--- a/office_hours.tokens.inc
+++ b/office_hours.tokens.inc
@@ -21,26 +21,40 @@ function office_hours_tokens($type, $tokens, array $data, array $options, Bubble
   }
 
   foreach ($tokens as $token => $original) {
+    /** @var \Drupal\Core\TypedData\Plugin\DataType\ItemList $list */
     $list = $data[$data['field_name']];
     if (!$list instanceof OfficeHoursItemList) {
       continue;
     }
 
+    // TODO: update patch once multiple values support added to the
+    // Token module:
+    // https://www.drupal.org/project/token/issues/3115486
     $parts = explode(':', $token);
-    $field = $list->get($parts[0]);
-
-    $day = $field->get($parts[1])->getValue();
-    switch ($parts[1]) {
-      case 'day':
-        $day_names = OfficeHoursDateHelper::weekDaysByFormat('long');
-        $replacements[$original] = $day_names[$day];
-        break;
-
-      case 'starthours':
-      case 'endhours':
-        $replacements[$original] = OfficeHoursDateHelper::format($day, "H:i:s", FALSE);
-        break;
+    $resulting_items = [];
+    if (is_numeric($parts[0])) {
+      $list = [$list->get($parts[0])];
+      $property = $parts[1];
     }
+    else {
+      $property = $parts[0];
+    }
+    /** @var \Drupal\office_hours\Plugin\Field\FieldType\OfficeHoursItem $item */
+    foreach ($list as $item) {
+      $value = $item->get($property);
+      switch ($parts[0]) {
+        case 'day':
+          $daynames = OfficeHoursDateHelper::weekDaysByFormat('long');
+          $resulting_items[] = $daynames[$item->{$property}];
+          break;
+
+        case 'starthours':
+        case 'endhours':
+          $resulting_items[] = OfficeHoursDateHelper::format($item->{$property}, "H:i:s", FALSE);
+          break;
+      }
+    }
+    $replacements[$original] = implode(',', $resulting_items);
   }
   return $replacements;
 }
