Skip to content
Snippets Groups Projects
ATime.vue 679 B
Newer Older
  • Learn to ignore specific revisions
  • <template>
      <time :datetime="isoRepresentation" :title="title">
        <slot :datetime="datetime" />
      </time>
    </template>
    
    <script lang="ts" setup>
    import { parseISO } from 'date-fns'
    import { computed } from 'vue'
    import { useI18n } from '@/i18n'
    
    const props = defineProps<{
      time: Date | string
    }>()
    const { locale } = useI18n()
    const datetime = computed(() => (props.time instanceof Date ? props.time : parseISO(props.time)))
    const isoRepresentation = computed(() =>
      typeof props.time === 'string' ? props.time : props.time.toISOString(),
    )
    const title = computed(() =>
      datetime.value.toLocaleString(locale.value, { dateStyle: 'full', timeStyle: 'medium' }),
    )
    </script>