diff --git a/app/assets/javascripts/issues/show/components/incidents/create_timeline_event.vue b/app/assets/javascripts/issues/show/components/incidents/create_timeline_event.vue
index c902895702ed94288112b23c4e6cdf2ab3d5d1f4..a1db1be8e620954775596522f8acc39423f163f7 100644
--- a/app/assets/javascripts/issues/show/components/incidents/create_timeline_event.vue
+++ b/app/assets/javascripts/issues/show/components/incidents/create_timeline_event.vue
@@ -1,6 +1,7 @@
 <script>
 import { produce } from 'immer';
 import { sortBy } from 'lodash';
+import { GlIcon } from '@gitlab/ui';
 import { sprintf } from '~/locale';
 import { createAlert } from '~/flash';
 import { convertToGraphQLId } from '~/graphql_shared/utils';
@@ -16,6 +17,7 @@ export default {
   i18n: timelineFormI18n,
   components: {
     TimelineEventsForm,
+    GlIcon,
   },
   inject: ['fullPath', 'issuableId'],
   props: {
@@ -107,11 +109,22 @@ export default {
 </script>
 
 <template>
-  <timeline-events-form
-    ref="eventForm"
-    :is-event-processed="createTimelineEventActive"
-    :has-timeline-events="hasTimelineEvents"
-    @save-event="createIncidentTimelineEvent"
-    @cancel="$emit('hide-new-timeline-events-form')"
-  />
+  <div
+    class="gl-relative gl-display-flex gl-align-items-center"
+    :class="{ 'timeline-entry-vertical-line': hasTimelineEvents }"
+  >
+    <div
+      v-if="hasTimelineEvents"
+      class="gl-display-flex gl-align-items-center gl-justify-content-center gl-align-self-start gl-bg-white gl-text-gray-200 gl-border-gray-100 gl-border-1 gl-border-solid gl-rounded-full gl-mt-2 gl-mr-3 gl-w-8 gl-h-8 gl-z-index-1"
+    >
+      <gl-icon name="comment" class="note-icon" />
+    </div>
+    <timeline-events-form
+      ref="eventForm"
+      :is-event-processed="createTimelineEventActive"
+      :has-timeline-events="hasTimelineEvents"
+      @save-event="createIncidentTimelineEvent"
+      @cancel="$emit('hide-new-timeline-events-form')"
+    />
+  </div>
 </template>
diff --git a/app/assets/javascripts/issues/show/components/incidents/timeline_events_form.vue b/app/assets/javascripts/issues/show/components/incidents/timeline_events_form.vue
index 0d84fabb1be1ec57de4af0366a06028218266313..eae1b85623770f49d064d5ac9ab72be72dcd5296 100644
--- a/app/assets/javascripts/issues/show/components/incidents/timeline_events_form.vue
+++ b/app/assets/javascripts/issues/show/components/incidents/timeline_events_form.vue
@@ -1,5 +1,5 @@
 <script>
-import { GlDatepicker, GlFormInput, GlFormGroup, GlButton, GlIcon } from '@gitlab/ui';
+import { GlDatepicker, GlFormInput, GlFormGroup, GlButton } from '@gitlab/ui';
 import MarkdownField from '~/vue_shared/components/markdown/field.vue';
 import autofocusonshow from '~/vue_shared/directives/autofocusonshow';
 import { timelineFormI18n } from './constants';
@@ -23,7 +23,6 @@ export default {
     GlFormInput,
     GlFormGroup,
     GlButton,
-    GlIcon,
   },
   i18n: timelineFormI18n,
   directives: {
@@ -48,14 +47,17 @@ export default {
       placeholderDate,
       hourPickerInput: placeholderDate.getHours(),
       minutePickerInput: placeholderDate.getMinutes(),
-      datepickerTextInput: null,
+      datePickerInput: placeholderDate,
     };
   },
   computed: {
     occurredAt() {
-      const [years, months, days] = this.datepickerTextInput.split('-');
+      const year = this.datePickerInput.getFullYear();
+      const month = this.datePickerInput.getMonth();
+      const day = this.datePickerInput.getDate();
+
       const utcDate = new Date(
-        Date.UTC(years, months - 1, days, this.hourPickerInput, this.minutePickerInput),
+        Date.UTC(year, month, day, this.hourPickerInput, this.minutePickerInput),
       );
 
       return utcDate.toISOString();
@@ -63,10 +65,10 @@ export default {
   },
   methods: {
     clear() {
-      const utcShiftedDateNow = getUtcShiftedDateNow();
-      this.placeholderDate = utcShiftedDateNow;
-      this.hourPickerInput = utcShiftedDateNow.getHours();
-      this.minutePickerInput = utcShiftedDateNow.getMinutes();
+      const newPlaceholderDate = getUtcShiftedDateNow();
+      this.datePickerInput = newPlaceholderDate;
+      this.hourPickerInput = newPlaceholderDate.getHours();
+      this.minutePickerInput = newPlaceholderDate.getMinutes();
       this.timelineText = '';
     },
     focusDate() {
@@ -84,114 +86,95 @@ export default {
 </script>
 
 <template>
-  <div
-    class="gl-relative gl-display-flex gl-align-items-center"
-    :class="{ 'timeline-entry-vertical-line': hasTimelineEvents }"
-  >
-    <div
-      v-if="hasTimelineEvents"
-      class="gl-display-flex gl-align-items-center gl-justify-content-center gl-align-self-start gl-bg-white gl-text-gray-200 gl-border-gray-100 gl-border-1 gl-border-solid gl-rounded-full gl-mt-2 gl-mr-3 gl-w-8 gl-h-8 gl-z-index-1"
-    >
-      <gl-icon name="comment" class="note-icon" />
-    </div>
-    <form class="gl-flex-grow-1 gl-border-gray-50" :class="{ 'gl-border-t': hasTimelineEvents }">
-      <div
-        class="gl-display-flex gl-flex-direction-column gl-sm-flex-direction-row datetime-picker"
-      >
-        <gl-form-group :label="__('Date')" class="gl-mt-5 gl-mr-5">
-          <gl-datepicker id="incident-date" #default="{ formattedDate }" v-model="placeholderDate">
+  <form class="gl-flex-grow-1 gl-border-gray-50" :class="{ 'gl-border-t': hasTimelineEvents }">
+    <div class="gl-display-flex gl-flex-direction-column gl-sm-flex-direction-row">
+      <gl-form-group :label="__('Date')" class="gl-mt-5 gl-mr-5">
+        <gl-datepicker
+          id="incident-date"
+          ref="datepicker"
+          v-model="datePickerInput"
+          data-testid="input-datepicker"
+        />
+      </gl-form-group>
+      <div class="gl-display-flex gl-mt-5">
+        <gl-form-group :label="__('Time')">
+          <div class="gl-display-flex">
+            <label label-for="timeline-input-hours" class="sr-only"></label>
             <gl-form-input
-              id="incident-date"
-              ref="datepicker"
-              v-model="datepickerTextInput"
-              data-testid="input-datepicker"
-              class="gl-datepicker-input gl-pr-7!"
-              :value="formattedDate"
-              :placeholder="__('YYYY-MM-DD')"
-              @keydown.enter="onKeydown"
+              id="timeline-input-hours"
+              v-model="hourPickerInput"
+              data-testid="input-hours"
+              size="xs"
+              type="number"
+              min="00"
+              max="23"
             />
-          </gl-datepicker>
-        </gl-form-group>
-        <div class="gl-display-flex gl-mt-5">
-          <gl-form-group :label="__('Time')">
-            <div class="gl-display-flex">
-              <label label-for="timeline-input-hours" class="sr-only"></label>
-              <gl-form-input
-                id="timeline-input-hours"
-                v-model="hourPickerInput"
-                data-testid="input-hours"
-                size="xs"
-                type="number"
-                min="00"
-                max="23"
-              />
-              <label label-for="timeline-input-minutes" class="sr-only"></label>
-              <gl-form-input
-                id="timeline-input-minutes"
-                v-model="minutePickerInput"
-                class="gl-ml-3"
-                data-testid="input-minutes"
-                size="xs"
-                type="number"
-                min="00"
-                max="59"
-              />
-            </div>
-          </gl-form-group>
-          <p class="gl-ml-3 gl-align-self-end gl-line-height-32">{{ __('UTC') }}</p>
-        </div>
-      </div>
-      <div class="common-note-form">
-        <gl-form-group class="gl-mb-3" :label="$options.i18n.areaLabel">
-          <markdown-field
-            :can-attach-file="false"
-            :add-spacing-classes="false"
-            :show-comment-tool-bar="false"
-            :textarea-value="timelineText"
-            :restricted-tool-bar-items="$options.restrictedToolBarItems"
-            markdown-docs-path=""
-            :enable-preview="false"
-            class="bordered-box gl-mt-0"
-          >
-            <template #textarea>
-              <textarea
-                v-model="timelineText"
-                class="note-textarea js-gfm-input js-autosize markdown-area"
-                data-testid="input-note"
-                dir="auto"
-                data-supports-quick-actions="false"
-                :aria-label="$options.i18n.description"
-                :placeholder="$options.i18n.areaPlaceholder"
-              >
-              </textarea>
-            </template>
-          </markdown-field>
+            <label label-for="timeline-input-minutes" class="sr-only"></label>
+            <gl-form-input
+              id="timeline-input-minutes"
+              v-model="minutePickerInput"
+              class="gl-ml-3"
+              data-testid="input-minutes"
+              size="xs"
+              type="number"
+              min="00"
+              max="59"
+            />
+          </div>
         </gl-form-group>
+        <p class="gl-ml-3 gl-align-self-end gl-line-height-32">{{ __('UTC') }}</p>
       </div>
-      <gl-form-group class="gl-mb-0">
-        <gl-button
-          variant="confirm"
-          category="primary"
-          class="gl-mr-3"
-          :loading="isEventProcessed"
-          @click="handleSave(false)"
-        >
-          {{ $options.i18n.save }}
-        </gl-button>
-        <gl-button
-          variant="confirm"
-          category="secondary"
-          class="gl-mr-3 gl-ml-n2"
-          :loading="isEventProcessed"
-          @click="handleSave(true)"
+    </div>
+    <div class="common-note-form">
+      <gl-form-group class="gl-mb-3" :label="$options.i18n.areaLabel">
+        <markdown-field
+          :can-attach-file="false"
+          :add-spacing-classes="false"
+          :show-comment-tool-bar="false"
+          :textarea-value="timelineText"
+          :restricted-tool-bar-items="$options.restrictedToolBarItems"
+          markdown-docs-path=""
+          :enable-preview="false"
+          class="bordered-box gl-mt-0"
         >
-          {{ $options.i18n.saveAndAdd }}
-        </gl-button>
-        <gl-button class="gl-ml-n2" :disabled="isEventProcessed" @click="$emit('cancel')">
-          {{ $options.i18n.cancel }}
-        </gl-button>
-        <div class="gl-border-b gl-pt-5"></div>
+          <template #textarea>
+            <textarea
+              v-model="timelineText"
+              class="note-textarea js-gfm-input js-autosize markdown-area"
+              data-testid="input-note"
+              dir="auto"
+              data-supports-quick-actions="false"
+              :aria-label="$options.i18n.description"
+              :placeholder="$options.i18n.areaPlaceholder"
+            >
+            </textarea>
+          </template>
+        </markdown-field>
       </gl-form-group>
-    </form>
-  </div>
+    </div>
+    <gl-form-group class="gl-mb-0">
+      <gl-button
+        variant="confirm"
+        category="primary"
+        class="gl-mr-3"
+        :loading="isEventProcessed"
+        @click="handleSave(false)"
+      >
+        {{ $options.i18n.save }}
+      </gl-button>
+      <gl-button
+        variant="confirm"
+        category="secondary"
+        class="gl-mr-3 gl-ml-n2"
+        :loading="isEventProcessed"
+        @click="handleSave(true)"
+      >
+        {{ $options.i18n.saveAndAdd }}
+      </gl-button>
+      <gl-button class="gl-ml-n2" :disabled="isEventProcessed" @click="$emit('cancel')">
+        {{ $options.i18n.cancel }}
+      </gl-button>
+      <div class="gl-border-b gl-pt-5"></div>
+    </gl-form-group>
+  </form>
 </template>
diff --git a/spec/frontend/issues/show/components/incidents/timeline_events_form_spec.js b/spec/frontend/issues/show/components/incidents/timeline_events_form_spec.js
index cd2cbb632465bd299a04f82d97fe52e0d608bf40..abe42dc3f288907e097a386727e7966c170e0397 100644
--- a/spec/frontend/issues/show/components/incidents/timeline_events_form_spec.js
+++ b/spec/frontend/issues/show/components/incidents/timeline_events_form_spec.js
@@ -13,6 +13,8 @@ jest.mock('~/flash');
 
 const fakeDate = '2020-07-08T00:00:00.000Z';
 
+const mockInputDate = new Date('2021-08-12');
+
 describe('Timeline events form', () => {
   // July 8 2020
   useFakeDate(fakeDate);
@@ -36,11 +38,10 @@ describe('Timeline events form', () => {
   const findSubmitAndAddButton = () => wrapper.findByText('Save and add another event');
   const findCancelButton = () => wrapper.findByText('Cancel');
   const findDatePicker = () => wrapper.findComponent(GlDatepicker);
-  const findDatePickerInput = () => wrapper.findByTestId('input-datepicker');
   const findHourInput = () => wrapper.findByTestId('input-hours');
   const findMinuteInput = () => wrapper.findByTestId('input-minutes');
   const setDatetime = () => {
-    findDatePicker().vm.$emit('input', new Date('2021-08-12'));
+    findDatePicker().vm.$emit('input', mockInputDate);
     findHourInput().vm.$emit('input', 5);
     findMinuteInput().vm.$emit('input', 45);
   };
@@ -87,14 +88,14 @@ describe('Timeline events form', () => {
       setDatetime();
       await nextTick();
 
-      expect(findDatePickerInput().element.value).toBe('2021-08-12');
+      expect(findDatePicker().props('value')).toBe(mockInputDate);
       expect(findHourInput().element.value).toBe('5');
       expect(findMinuteInput().element.value).toBe('45');
 
       wrapper.vm.clear();
       await nextTick();
 
-      expect(findDatePickerInput().element.value).toBe('2020-07-08');
+      expect(findDatePicker().props('value')).toStrictEqual(new Date(fakeDate));
       expect(findHourInput().element.value).toBe('0');
       expect(findMinuteInput().element.value).toBe('0');
     });