我使用此代码以法语格式显示日期:
var dateToDisplay = moment(myDateInMS, "x").format("DD/MM/YYYY - hh:mm:ss"); // Output : "20/03/2016 - 12:35:32"
我想根据浏览器语言改进此显示以获得更好的显示效果。我怎么能用时刻做到这一点?
答案 0 :(得分:1)
我不建议根据浏览器语言设置区域设置,因为它不是用户实际区域设置的明确信号。例如。用户可以使用英语操作系统,即使他/她是法语人士。
话虽如此。从浏览器中读取语言并将Moment.js设置为相应的语言环境可以这样做:
var localeData = moment.localeData();
switch (navigator.language || navigator.userLanguage) {
case 'fr':
localeData = moment.localeData('fr');
break;
}
localeData.longDateFormat('LL'); // the example 'LL' will output date in "D MMMM YYYY format"
请注意,这是设置整个Moment.js实例的区域设置(这可能是您想要做的)。另请注意,从Moment.js 2.8.0开始,更改全局区域设置不会影响现有实例。
另见
答案 1 :(得分:1)
Moment实际上会搜索从浏览器中提取的语言环境的子字符串,以尝试选择正确的语言环境。因此,无需预先分析或创建案例陈述。
例如,时刻有es
作为区域设置,但不是es-mx
。如果浏览器设置为es-mx
,则语言环境功能会查找es-mx
,当找不到它时,会回退到es
。因此:
moment.locale('es-mx');
"es"
意味着您可以这样做:
moment.locale(navigator.userLanguage || navigator.language);
然后在格式化日期时,使用其中一种特定于语言环境的格式使其适合用户:
moment().format('LL')
"1 de abril de 2016"
moment().format('L')
"01/04/2016"
对于所有本地化格式及其应生成的内容,请参阅格式文档的本地化格式部分:http://momentjs.com/docs/#/displaying/format/