2016-12-15 62 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>

相關問題