import { AppModule } from '@/store/modules/app'
import dayjs from 'dayjs'
import { useI18n } from './useI18n'

export const customHumanize = (timestamp: number) => {
  const { t, tc } = useI18n()
  const SEC_IN_MIN = 60
  const SEC_IN_HOUR = SEC_IN_MIN * 60
  const SEC_IN_DAY = SEC_IN_HOUR * 24

  if (timestamp === 0) return 'N/A'
  dayjs.locale(AppModule.language)
  const duration = (dayjs as any).duration(timestamp * 1000)
  const humanizedRpo = duration.humanize()
  if (timestamp > SEC_IN_DAY) {
    return `${humanizedRpo} \n${duration.hours() ? tc('common.hour', duration.hours()) : ''}`
  } else if (timestamp > SEC_IN_HOUR && timestamp < (SEC_IN_DAY - SEC_IN_HOUR / 2)) {
    return `${humanizedRpo} ${duration.minutes() ? `\n${duration.minutes()} ${t('common.min')}` : ''}`
  } else if (timestamp < SEC_IN_MIN) {
    return `${duration.seconds()} ${t('common.sec')}`
  }
  return humanizedRpo
}
если первое число 1 во времени, то пишется как, в остальных случаях нормально
день 12 часов
час 10 минут
минута

Нужно добавить отображение числа тоже
1 день 12 часов
1 час 10 минут
1 минута

реши с помощью информации ниже
Day.js очень легко настраивается.

Вы можете создать новый регион.

var localeObject = {...} // Day.js locale Object, detailed below
dayjs.locale('en-my-settings', localeObject);
Обновить существующую локаль.

Для работы этого плагина требуется UpdateLocale
dayjs.extend(updateLocale)

dayjs.updateLocale('en', {
  /**/
})
Шаблон объекта локали Day.js.

const localeObject = {
  name: 'es', // name String
  weekdays: 'Domingo_Lunes ...'.split('_'), // weekdays Array
  weekdaysShort: 'Sun_M'.split('_'), // OPTIONAL, short weekdays Array, use first three letters if not provided
  weekdaysMin: 'Su_Mo'.split('_'), // OPTIONAL, min weekdays Array, use first two letters if not provided
  weekStart: 1, // OPTIONAL, set the start of a week. If the value is 1, Monday will be the start of week instead of Sunday。
  yearStart: 4, // OPTIONAL, the week that contains Jan 4th is the first week of the year.
  months: 'Enero_Febrero ... '.split('_'), // months Array
  monthsShort: 'Jan_F'.split('_'), // OPTIONAL, short months Array, use first three letters if not provided
  ordinal: n => `${n}º`, // ordinal Function (number) => return number + output
  formats: {
    // abbreviated format options allowing localization
    LTS: 'h:mm:ss A',
    LT: 'h:mm A',
    L: 'MM/DD/YYYY',
    LL: 'MMMM D, YYYY',
    LLL: 'MMMM D, YYYY h:mm A',
    LLLL: 'dddd, MMMM D, YYYY h:mm A',
    // lowercase/short, optional formats for localization
    l: 'D/M/YYYY',
    ll: 'D MMM, YYYY',
    lll: 'D MMM, YYYY h:mm A',
    llll: 'ddd, MMM D, YYYY h:mm A'
  },
  relativeTime: {
    // relative time format strings, keep %s %d as the same
    future: 'in %s', // e.g. in 2 hours, %s been replaced with 2hours
    past: '%s ago',
    s: 'a few seconds',
    m: 'a minute',
    mm: '%d minutes',
    h: 'an hour',
    hh: '%d hours', // e.g. 2 hours, %d been replaced with 2
    d: 'a day',
    dd: '%d days',
    M: 'a month',
    MM: '%d months',
    y: 'a year',
    yy: '%d years'
  },
  meridiem: (hour, minute, isLowercase) => {
    // OPTIONAL, AM/PM
    return hour > 12 ? 'PM' : 'AM'
  }
}
Шаблон файла локали Day.js (например, dayjs/locale/es.js).

import dayjs from 'dayjs'

const locale = { ... } // Your Day.js locale Object.

dayjs.locale(locale, null, true) // load locale for later use

export default locale