Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MomentJS返回重复的月份?_Javascript_Date_Momentjs - Fatal编程技术网

Javascript MomentJS返回重复的月份?

Javascript MomentJS返回重复的月份?,javascript,date,momentjs,Javascript,Date,Momentjs,我使用MomentJS将从服务中获取的日期字符串解析为字符串月份 字符串的格式类似于“2013-1”,应该是1月份。这一刻是正确的 然而,一旦我过了八月,事情就变得很奇怪了 例如,我有 console.log(moment('2012-9').format('MMMM')); 对我来说是九月 那么我会: console.log(moment('2012-10').format('MMMM')); it also returns September. 这最终将11日映射到10月,12日映射

我使用MomentJS将从服务中获取的日期字符串解析为字符串月份

字符串的格式类似于“2013-1”,应该是1月份。这一刻是正确的

然而,一旦我过了八月,事情就变得很奇怪了

例如,我有

console.log(moment('2012-9').format('MMMM')); 
对我来说是九月

那么我会:

console.log(moment('2012-10').format('MMMM')); it also returns September. 
这最终将11日映射到10月,12日映射到12月,因此12月的整个数据集被截断


我现在是做错了什么,还是出了什么问题?我已经检查了所有其他月份,但它没有这样做

对面临相同问题的任何其他人进行最终编辑:
时刻('2012-10','YYYY-MM')。格式('MMMM')解决了OP的问题

您使用的是哪个momentJS版本?我刚试过2.10.5和

console.log(moment('2012-9').format('MMMM'));//Returns September

console.log(moment('2012-10').format('MMMM'));//Returns October
下面的屏幕截图是momentjs网站在控制台中运行的代码:


如果仍面临问题,请升级至最新版本。

我已确定发生这种情况的原因

日期“2012-1”的格式不是标准ISO日期

为了在处理日期时返回正确的月份,我必须指定日期字符串的格式,因此我使用

console.log(moment('2012-10', 'YYYY-M').format('MMMM')); 
返回正确的月份,十月


谢谢大家的帮助

我无法复制这一点;检查moment.js对字符串处理的描述。月份从00==一月,10==九月开始。9是无效月份(取决于您的浏览器)。测试力矩为2.10。3@nril当我对console.log(矩('2012-0').format('MMMM')执行同样的操作时,它给了我一个无效的日期错误。@KimGysen这就是我运行你的小提琴时发生的情况:我的错误-如果你想使用这种格式,你需要提供解析输入的格式-如('2012-01','YYYY-MM')。所以您的完整语句应该是:console.log(moment('2012-09','YYYY-MM').format('MMMM');在这种格式中,一月是01,而不是00。我使用的是2.10.0。我会更新并检查发生了什么。我更新到了最新版本,这是这两个截图中的结果。一个是我用来检查的行的代码,另一个是结果。代码行:结果:我明白了,您可以尝试使用console.log(矩('2012-10','YYYY-MM').format('MMMM'))吗;然后用你得到的回答?@oscarmccullow很高兴这能奏效,你能接受帮助你的答案吗(除了你自己的答案)?