diff --git a/core/includes/theme.inc b/core/includes/theme.inc
index 62f2d6f..ca44bc8 100644
--- a/core/includes/theme.inc
+++ b/core/includes/theme.inc
@@ -540,9 +540,11 @@ function template_preprocess_datetime_form(&$variables) {
  */
 function template_preprocess_datetime_wrapper(&$variables) {
   $element = $variables['element'];
+  $element['#title_display'] = isset($element['#title_display']) ? $element['#title_display'] : 'before';
 
   if (!empty($element['#title'])) {
     $variables['title'] = $element['#title'];
+    $variables['title_display'] = $element['#title_display'];
   }
 
   // Suppress error messages.
diff --git a/core/modules/datetime/src/Plugin/Field/FieldWidget/DateTimeDefaultWidget.php b/core/modules/datetime/src/Plugin/Field/FieldWidget/DateTimeDefaultWidget.php
index 8d436a0..5d0960a 100644
--- a/core/modules/datetime/src/Plugin/Field/FieldWidget/DateTimeDefaultWidget.php
+++ b/core/modules/datetime/src/Plugin/Field/FieldWidget/DateTimeDefaultWidget.php
@@ -87,6 +87,8 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
       '#date_time_format' => $time_format,
       '#date_time_element' => $time_type,
       '#date_time_callbacks' => array(),
+      '#title' => $element['#title'],
+      '#title_display' => 'invisible',
     );
 
     return $element;
diff --git a/core/modules/datetime/src/Plugin/Field/FieldWidget/DateTimeWidgetBase.php b/core/modules/datetime/src/Plugin/Field/FieldWidget/DateTimeWidgetBase.php
index dfe750e..36bed3c 100644
--- a/core/modules/datetime/src/Plugin/Field/FieldWidget/DateTimeWidgetBase.php
+++ b/core/modules/datetime/src/Plugin/Field/FieldWidget/DateTimeWidgetBase.php
@@ -28,7 +28,6 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
     // title because the actual title display is handled at a higher level by
     // the Field module.
 
-    $element['#theme_wrappers'][] = 'datetime_wrapper';
     $element['#attributes']['class'][] = 'container-inline';
 
     $element['value'] = array(
diff --git a/core/modules/system/templates/datetime-wrapper.html.twig b/core/modules/system/templates/datetime-wrapper.html.twig
index 8430baa..5258361 100644
--- a/core/modules/system/templates/datetime-wrapper.html.twig
+++ b/core/modules/system/templates/datetime-wrapper.html.twig
@@ -19,6 +19,7 @@
   set title_classes = [
     required ? 'js-form-required',
     required ? 'form-required',
+    title_display == 'invisible' ? 'visually-hidden'
   ]
 %}
 {% if title %}
diff --git a/core/themes/classy/templates/form/datetime-wrapper.html.twig b/core/themes/classy/templates/form/datetime-wrapper.html.twig
index 3f6aa59..efd06e0 100644
--- a/core/themes/classy/templates/form/datetime-wrapper.html.twig
+++ b/core/themes/classy/templates/form/datetime-wrapper.html.twig
@@ -18,6 +18,7 @@
     'label',
     required ? 'js-form-required',
     required ? 'form-required',
+    title_display == 'invisible' ? 'visually-hidden'
   ]
 %}
 {% if title %}
diff --git a/core/themes/stable/templates/form/datetime-wrapper.html.twig b/core/themes/stable/templates/form/datetime-wrapper.html.twig
index 3c37ffd..cff8d8f 100644
--- a/core/themes/stable/templates/form/datetime-wrapper.html.twig
+++ b/core/themes/stable/templates/form/datetime-wrapper.html.twig
@@ -17,6 +17,7 @@
   set title_classes = [
     required ? 'js-form-required',
     required ? 'form-required',
+    title_display == 'invisible' ? 'visually-hidden'
   ]
 %}
 {% if title %}
