2015-04-03 35 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

相关问题