darksoulsong
darksoulsong

Reputation: 15319

date-fns: how to define a default locale app-wide?

It's pretty straightforward to set a locale in a per-function call basis:

import { formatRelative, subDays } from 'date-fns'
import { ptBR } from 'date-fns/locale'

formatRelative(subDays(new Date(), 3), new Date(), { locale: ptBR })

But how do I set a default locale to be used app-wide?

Upvotes: 12

Views: 24481

Answers (2)

Reinier68
Reinier68

Reputation: 3242

This has been released in version 2.29: https://date-fns.org/v2.29.0/docs/setDefaultOptions

// Set global locale:
var setDefaultOptions = require('date-fns/setDefaultOptions')
import { es } from 'date-fns/locale'
setDefaultOptions({ locale: es })

Upvotes: 22

t1m0n
t1m0n

Reputation: 3431

As I know, there is no such option. Usually I create custom wrapper function around formatDate functions and pass there application locale. You could store locale in global variables or in app level stores:

formatRelativeWrap.js

import { formatRelative } from 'date-fns'
import AppStore from 'appStore'

export default (date1, date2, locale) => {
    return formatRelative(date1, date2, { locale: locale || AppStore.defaultLocale})
}

As @Pointy mentioned there is note about this in official docs - https://date-fns.org/v2.22.1/docs/I18n - second example.

Upvotes: 4

Related Questions