我正在使用React Native版本0.45.1和版本2.18.1。
我正在尝试根据设备本地更改日期,但我总是在'en-Us'区域设置中获取日期。 我无法导入所有语言环境,就像我在某些解决方案中看到的那样,因为我事先并不知道设备语言环境。 (例如:https://github.com/moment/moment/issues/2962)
还有其他选择吗?
答案 0 :(得分:17)
我无法导入所有语言环境,就像我在某些解决方案中看到的那样,因为我事先并不知道设备语言环境。
实际上,你可以import all of the locales这样的时间homepage上就提到了moment-with-locales
:
import moment from 'moment/min/moment-with-locales'
// Or if you are using require instead:
var moment = require('moment/min/moment-with-locales')
然后,您应该能够使用您喜欢的任何模块/方法获取您的设备区域设置(在我的示例中,我将使用Expo)并将当前区域设置更改为它。例如:
var deviceLocale = await Expo.Util.getCurrentLocaleAsync()
moment.locale(deviceLocale)
我不会说导入所有内容是处理此问题的最佳方法,因为moment-with-locales
大于moment
,但它会完成您希望它完成的任务。你也可以选择导入你支持的语言环境,就像我链接到的Github评论中提到的那样。
答案 1 :(得分:2)
我不是通过语言环境导入语言环境,而是使用此解决方案来全局设置语言环境:
import { getDeviceLocale } from "react-native-device-info";
import moment from "moment";
import "moment/min/locales";
const deviceLocale = getDeviceLocale();
moment.locale(deviceLocale); //set your locale (eg: fr)
moment(1316116057189).fromNow(); // il y a 7 ans
将此分享给需要的人