我有以下JSON,我需要将月份名称转换为数字格式,因此“2016年11月”会显示“11-16”,用月份分隔月份和年份,仅显示当年的最后2位数字(在Javascript / Jquery)。我怎么能这样做?
reject
答案 0 :(得分:0)
如果您没有使用任何库(例如moment.js) 时间 ,您需要使用纯js。
var monthNames = [ "January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December" ];
var str = "January 2016";
var arr = str.split(' ');
var month = arr[0];
var year = arr[1];
var newMonth = monthNames.indexOf(month) + 1 ;
var newYear = year % 1000;
if(newMonth<10){
newMonth = "0" + newMonth
}
alert (newMonth + " - " + newYear);
答案 1 :(得分:0)
使用MomentJS你可以这样做:
var array = [
["November 2016", "December 2016", "January 2017", "February 2017", "March 2017"],
["total", 2, 43, 59, 51, 41],
["mammo", 1, 20, 33, 12, 12],
["face", 1, 20, 16, 30, 27],
["body", 0, 3, 10, 9, 2],
["photo", 0, 19, 27, 12, 5],
["scan", 2, 24, 32, 39, 36]
]
for(var i = 0; i < array[0].length; i++)
{
array[0][i] = moment(array[0][i]).format('MM, YY');
}
您可以在此处获取Moment.js:http://momentjs.com/
它非常方便日期操作。
答案 2 :(得分:0)
如果你的数组被称为data
,那么你可以按如下方式进行:
var result = [];
data[0].forEach(function(myString){
var info = myString.split(" ");
var month = info[0];
var year = info[1];
var mresult;
switch(month) {
case "January" : { mresult = 1; } break;
case "February" : { mresult = 2; } break;
case "March" : { mresult = 3; } break;
case "April" : { mresult = 4; } break;
case "May" : { mresult = 5; } break;
case "June" : { mresult = 6; } break;
case "July" : { mresult = 7; } break;
case "August" : { mresult = 8; } break;
case "September" : { mresult = 9; } break;
case "October" : { mresult = 10; } break;
case "November" : { mresult = 11; } break;
case "December" : { mresult = 12; } break;
}
result.push(mresult + "-" + year[2] + year[3]);
});
现在数组result
包含所有值,如下所示:
["11-16", "12-16", "1-17", "2-17", "3-17"]
答案 3 :(得分:0)
我不知道我的方法是否正确但我们这样做, 您需要获取数组的每个索引,将其与空间分开,并在每次迭代中将月份和年份存储在2个临时变量中。 一旦你有变量中的tempMonth和tempYear,使用下面的谎言来获得数字和年份的月份数字。
tempMonth = 'November'
tempYear = '2016'
numMonth = moment ().month(tempMonth).format ('M');
numYear = moment ().year(tempYear).format ('YY');
FinalVar = numMonth + "-" + numYear.
使用此逻辑再次创建数组。
答案 4 :(得分:0)
如果你的数组被称为data
,那么你可以执行:
function convert(monthList) {
monthList.forEach(function (element) {
var myDate = new Date(element.split(" ")[0] + " 1, 2000");
var monthDigit = myDate.getMonth() + 1;
console.log(monthDigit+"-"+element.split(" ")[1].substring(2,4))
}, this);
}
convert(data[0])
答案 5 :(得分:0)
使用Date.parse和Array#map()的方法。
首先将日期字符串转换为包含格式为“2016年11月2日”的日期,以便传递给Date
对象。使用月中的第二天来避免任何时区问题
var arr = [["November 2016", "December 2016", "January 2017", "February 2017", "March 2017"],
["total", 2, 43, 59, 51, 41],
["mammo", 1, 20, 33, 12, 12],
["face", 1, 20, 16, 30, 27],
["body", 0, 3, 10, 9, 2],
["photo", 0, 19, 27, 12, 5],
["scan", 2, 24, 32, 39, 36]];
arr[0] = arr[0].map(function(str){
var d = new Date(Date.parse(str.replace(' ', ' 2,')));
return [d.getMonth()+1 ,String(d.getFullYear()).slice(2)].join('-')
});
console.log(arr)
答案 6 :(得分:0)
这应该有效
var array = ["November 2016","December 2016","January 2017","February 2017","March 2017"];
for(var i=0;i<array.length;i++){
var str = "1 "+array[i];
var date = new Date(str);
var month = date.getMonth()+1;
var year = date.getFullYear()+"";
array[i] = month +"-"+year.substring(2);
}
console.log(array);