From a01442d154192c6ce407724a64149fa1e569a203 Mon Sep 17 00:00:00 2001 From: rijkvanzanten Date: Fri, 10 Jul 2020 12:51:17 -0400 Subject: [PATCH] Only use iso8601 in datetime --- src/displays/datetime/datetime.vue | 9 +----- src/interfaces/datetime/datetime.vue | 44 ++++++++-------------------- 2 files changed, 14 insertions(+), 39 deletions(-) diff --git a/src/displays/datetime/datetime.vue b/src/displays/datetime/datetime.vue index 1756c9a5f1..14628b9b87 100644 --- a/src/displays/datetime/datetime.vue +++ b/src/displays/datetime/datetime.vue @@ -6,7 +6,6 @@ import { defineComponent, ref, watch, PropType } from '@vue/composition-api'; import formatLocalized from '@/utils/localized-format'; import i18n from '@/lang'; -import parse from 'date-fns/parse'; import parseISO from 'date-fns/parseISO'; export default defineComponent({ @@ -32,13 +31,7 @@ export default defineComponent({ return; } - let date: Date; - - if (newValue.includes('T')) { - date = parseISO(props.value); - } else { - date = parse(props.value, 'yyyy-MM-dd HH:mm:ss', new Date()); - } + const date = parseISO(props.value); let format = `${i18n.t('date-fns_date')} ${i18n.t('date-fns_time')}`; if (props.type === 'date') format = String(i18n.t('date-fns_date')); diff --git a/src/interfaces/datetime/datetime.vue b/src/interfaces/datetime/datetime.vue index 5bd7dacf3b..8c04dde4e6 100644 --- a/src/interfaces/datetime/datetime.vue +++ b/src/interfaces/datetime/datetime.vue @@ -15,7 +15,7 @@ -
+
@@ -27,9 +27,13 @@
- + -
+
@@ -54,9 +58,7 @@ import { defineComponent, ref, watch, computed, reactive, PropType } from '@vue/composition-api'; import formatLocalized from '@/utils/localized-format'; import { i18n } from '@/lang'; -import parse from 'date-fns/parse'; -import format from 'date-fns/format'; -import parseISO from 'date-fns/parseISO'; +import { formatISO, parseISO } from 'date-fns'; type LocalValue = { month: null | number; @@ -79,7 +81,9 @@ export default defineComponent({ default: null, }, type: { - type: String as PropType<'datetime' | 'time' | 'date' | 'datetime_created' | 'datetime_updated'>, + type: String as PropType< + 'timestamp' | 'datetime' | 'time' | 'date' | 'datetime_created' | 'datetime_updated' + >, required: true, validator: (val: string) => ['datetime', 'date', 'time', 'datetime_created', 'datetime_updated'].includes(val), @@ -90,31 +94,9 @@ export default defineComponent({ }, }, setup(props, { emit }) { - const formatString = computed(() => { - const date = 'yyyy-MM-dd'; - const time = 'HH:mm:ss'; - - if (props.type === 'datetime') { - return date + ' ' + time; - } - - if (props.type === 'date') { - return date; - } - - return time; - }); - const valueAsDate = computed(() => { if (props.value === null) return null; - - // The API can return dates as MySQL style (yyyy-mm-dd hh:mm:ss) or ISO 8601. - // If the value contains a T, it's safe to assume it's a ISO 8601 - if (props.value.includes('T')) { - return parseISO(props.value); - } - - return parse(props.value, formatString.value, new Date()); + return parseISO(props.value); }); const displayValue = ref(null); @@ -159,7 +141,7 @@ export default defineComponent({ const asDate = new Date(year, month, date, period === 'am' ? hours : hours + 12, minutes, seconds); - emit('input', format(asDate, formatString.value)); + emit('input', formatISO(asDate)); } }, {