2015-04-03 63 views
2

使用MomentJS,如有必要,我可以使用.locale(或舊版本中的.lang)在特定時刻(而不是全局)設置區域設置。我怎樣才能解析一個字符串使用全球之外的特定地區?由於moment函數本身就是我們用來解析的東西,而且似乎沒有完全解析的.set變體?解析日期字符串在特定區域設置(不是時區!)

例如爲:

// Assume the default locale is 'en' (just in case, I'll set it for the snippet) 
 
moment.locale('en'); 
 

 
// I have this string that's in the French locale 
 
var str = "30 Avril 2015"; 
 

 
// Parsing it fails 
 
var m = moment(str, "DD MMMM YYYY"); 
 
snippet.log(m.format("YYYY-MM-DD")); // "Invalid Date"
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment-with-locales.js"></script> 
 
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --> 
 
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

+1

我發佈了它,因爲它可能對別人有用嗎?我想我得到了你想要的東西,你想要某種「範圍」,例如你可以在法國日期工作,而不會搞亂全球語言環境。 – adeneo 2015-04-03 15:35:20

+0

@ adeneo:同意。是的,這就是我想要的。我會分開發布。 – 2015-04-03 15:37:32

+0

你會認爲有辦法做到這一點,但我不記得曾經見過這樣的事情嗎?文檔相當廣泛,我沒有閱讀所有內容,但是我不能發現任何可以這樣工作的東西,而且您可能看起來很好。有人可能會延長時間對實例或類似的東西有'set()'方法嗎? – adeneo 2015-04-03 15:40:11

回答

4

作爲2.0.0版本,區域設置密鑰可以作爲第三個參數被傳遞給moment()moment.utc()

// Assume the default locale is 'en' (just in case, I'll set it for the snippet) 
 
moment.locale('en'); 
 

 
// I have this string that's in the French locale 
 
var str = "30 Avril 2015"; 
 

 
// Parse it in 'fr' 
 
var m = moment(str, "DD MMMM YYYY", "fr"); 
 

 
// Check result: 
 
snippet.log(m.format("YYYY-MM-DD -- MMMM")); 
 

 
// Check global locale 
 
var locale = moment()._locale._abbr; 
 
snippet.log('Locale : ' + locale);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment-with-locales.js"></script> 
 
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --> 
 
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

+1

謝謝。這就是我實際詢問的問題的答案。可悲的是,這並不完全是我要問的問題。 :-)(這非常令人尷尬;我見過其他人這麼做很多次,你會認爲我會更清楚。)我也會提出我要*問的問題,但這是正確的回答這個問題。再次感謝。 – 2015-04-03 15:34:53

+0

這是我*想要問的問題,在這裏找到它非常有用!謝謝 :) – 2016-01-20 14:51:31

相關問題