2016-12-15 32 views
1

我们从日期选择器中选择的日期为DD/MM/YYYY h:mm A格式。 目前,我们需要以这个日期正确地解释为明确提供的格式moment.js如下:格式化date.js使用区域设置而不是显式格式

var dateFormats = ['DD/MM/YYYY h:mm A']; 
var tmp1 = moment(date, dateFormats).format('YYYY-MM-DD HH:mm'); 

我们倾向于将避免硬编码的DateFormats,而是能够如下应用区域:

var locale = (window.navigator.userLanguage || window.navigator.language).toLowerCase(); 
moment.locale(locale); 
var tmp1 = moment(date).format('YYYY-MM-DD HH:mm'); 

目前,执行下面的(应用以上的区域设置后):

moment('15/12/2016 2:27 PM').format('YYYY/MM/DD h:mm A'); 

给出:

"2017/03/12 2:27 PM" 

当需要给:

"2016/12/15 2:27 PM" 

我们怎样才能做到这一点?

回答

4

如果您的输入字符串具有特定于语言环境的格式,您可以使用时刻localeData来解析它。使用longDateFormat(dateFormat);您可以获得本地化的格式。

这里使用EN-AU现场工作的例子:

moment.locale('en-au'); 
 
var input = '15/12/2016 2:27 PM'; 
 
var s = moment(input).format('YYYY/MM/DD h:mm A'); // Gives Deprecation warning 
 
console.log(s); // Invalid date 
 

 
// Get locale data 
 
var localeData = moment.localeData(); 
 
var format = localeData.longDateFormat('L') + ' ' + localeData.longDateFormat('LT'); 
 
s = moment(input, format).format('YYYY/MM/DD h:mm A'); 
 
console.log(s); // 2016/12/15 2:27 PM
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.0/moment-with-locales.min.js"></script>

相关问题