localeDate.ts 875 B

12345678910111213141516171819202122232425262728293031
  1. import { format as dateFnsFormat, parse as dateFnsParse } from 'date-fns';
  2. /* istanbul ignore next */
  3. const replace = function replace(str, replacements) {
  4. let _str = str;
  5. for (const key of Object.keys(replacements)) {
  6. if (typeof replacements[key] === 'string') {
  7. _str = _str.replace(key, replacements[key]);
  8. }
  9. }
  10. return _str;
  11. };
  12. /* istanbul ignore next */
  13. export function localeFormat(date, format, locale = {}, options = {}) {
  14. let str = dateFnsFormat(date, format, options);
  15. str = replace(str, locale);
  16. return str;
  17. }
  18. /* istanbul ignore next */
  19. export function localeParse(dateString, format, locale = {}, defaultDate = null, options = {}) {
  20. // const invertedLocale = invert(locale);
  21. const _dateString = replace(dateString, locale);
  22. return dateFnsParse(_dateString, format, defaultDate, options);
  23. }