Useful methods for date/time management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

33 regels
737 B

  1. import { format, } from 'date-fns'
  2. type DateLike = Date | string | number
  3. type MediumDateTime = (d: unknown) => string
  4. const mediumDateTime: MediumDateTime = dateRaw => {
  5. const date = dateRaw as DateLike
  6. let d: Date
  7. switch (typeof date!) {
  8. case 'string':
  9. d = new Date(date)
  10. break
  11. case 'number':
  12. if (isNaN(date as number)) {
  13. throw RangeError('Argument cannot be NaN.')
  14. }
  15. d = new Date(date)
  16. break
  17. case 'object':
  18. if (date! instanceof Date) {
  19. d = date
  20. break
  21. }
  22. throw RangeError('Invalid argument format.')
  23. default:
  24. throw TypeError('Invalid argument type.')
  25. }
  26. return format(d, 'yyyy-MM-dd HH:mm')
  27. }
  28. export default mediumDateTime