2017-07-23 2 views
4

Je travaille avec React Native version 0.45.1 et avec la version de moment 2.18.1.React Native moment.locale ne fonctionne pas

J'essaie de changer la date en fonction de l'appareil local, mais je reçois toujours la date dans les paramètres régionaux «en-Us». Je ne peux pas importer toutes les locales comme je l'ai vu dans certaines solutions, car je ne connais pas les paramètres régionaux de l'appareil à l'avance. (par exemple: https://github.com/moment/moment/issues/2962)

d'autres options?

Répondre

8

Je ne peux pas importer tous les paramètres régionaux comme je l'ai vu dans certaines solutions, car je ne connais pas les paramètres régionaux du périphérique à l'avance.

En fait, vous pouvez import all of the locales dans un moment comme celui-ci (moment-with-locales est mentionné là sur le homepage):

import moment from 'moment/min/moment-with-locales' 
// Or if you are using require instead: 
var moment = require('moment/min/moment-with-locales') 

alors vous devriez être en mesure d'obtenir vos paramètres régionaux de l'appareil avec ce module/méthode que vous préférez (dans mon exemple, je vais utiliser Expo) et changer le moment local pour cela. Par exemple:

var deviceLocale = await Expo.Util.getCurrentLocaleAsync() 
moment.locale(deviceLocale) 

Je ne dirais pas que l'importation de tout est la meilleure méthode pour manipuler ce que moment-with-locales est plus grand que juste moment, mais il fait ce que vous voulez accomplir. Vous pouvez également suivre la route d'importer simplement les locales que vous prenez en charge comme mentionné dans ce commentaire Github auquel je suis lié.

+0

J'ai pensé à cela - mais je n'aime pas cette direction. Importer tout dans l'application n'est pas le meilleur moyen dans mon esprit ou la bonne approche lors de l'écriture sur mobile. pour l'instant, enlevé le paquet 'moment' et j'utilise l'objet Date avec la méthode 'toLocaleDateString' pour convertir la date au bon format. –