Javascript 在“选择”下拉列表中获取最近3个月的姓名

Javascript 在“选择”下拉列表中获取最近3个月的姓名,javascript,datetime,Javascript,Datetime,我有一份报告,其中用户只允许从过去3个月中选择一个选项,如下所示: 我想写一个javaScript函数来实现这一点 我尝试的是: function getLastMonths(n) { var months = new Array(); var today = new Date(); var year = today.getFullYear(); var month = today.getMonth() + 1; var i = 0; do

我有一份报告,其中用户只允许从过去3个月中选择一个选项,如下所示:

我想写一个javaScript函数来实现这一点

我尝试的是:

function getLastMonths(n) {

    var months = new Array();

    var today = new Date();
    var year = today.getFullYear();
    var month = today.getMonth() + 1;

    var i = 0;
    do {
        months.push(year + (month > 9 ? "" : "0") + month);
        if(month == 1) {
            month = 12;
            year--;
        } else {
            month--;
        }
        i++;
    } while(i < n);

    return months;

}
它打印:

201704,201703,201702,201701
这不是我需要的样式


有人能帮我吗?

试试这个。将月份名称添加到一些
数组中
,然后查找索引

函数getLastMonths(n){
变量m=['','一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月'];
var months=新数组();
var today=新日期();
var year=today.getFullYear();
var month=today.getMonth()+1;
var i=0;
做{
月数.推送(m[parseInt((月数>9?”:“0”)+月数)]+'-'+年);
如果(月份==1){
月=12;
年--;
}否则{
月--;
}
i++;
}而(i文件编写(getLastMonths(4))由于内部JS名称不是公共的,您必须手动将数字转换为名称

参见下面的工作示例。这将准确地输出您在下拉列表中显示月份的方式

var monthNames=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”,
“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”
];
函数getLastMonths(n){
var months=新数组();
var today=新日期();
var year=today.getFullYear();
var month=today.getMonth()+1;
var i=0;
做{
月数。推送(月数[月]+'-'+年);
如果(月份==1){
月=12;
年--;
}否则{
月--;
}
i++;
}而(i文件编写(getLastMonths(4))看看这里。多亏了for循环,它稍微短了一点

函数getLast3Months(){ var monthNames=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”, “七月”、“八月”、“九月”、“十月”、“十一月”、“十二月” ]; var today=新日期(); var last3个月=[] 对于(i=0;i<3;i++){ 最后3个月.push(monthNames[(today.getMonth()-i)]+'-'+today.getFullYear()); } 最后3个月返回; }
document.write(getLast3Months())使用moment.js怎么样

var getLastMonths=函数(n){
var arr=新数组();
arr.push(矩()格式('YYYY-MM');
对于(变量i=1;i<3;i++){
arr.push(moment().add(i*-1,'Month').format('YYYY-MM'));
}
返回arr;
}
var appendOptions=函数(arr){
var html='';

对于(var i=0;i您可以这样做。只需从当前日期减去
一个月即可

函数getLastMonths(n){
var m=[‘一月’、‘二月’、‘三月’、‘四月’、‘五月’、‘六月’、‘七月’、‘八月’、‘九月’、‘十月’、‘十一月’、‘十二月’];
var最近n个月=[]
var d=新日期()

对于(var i=0;i我修改了前面的代码,并给出了一个示例: 小提琴:

函数getLast3Months(){ var monthNames=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”, “七月”、“八月”、“九月”、“十月”、“十一月”、“十二月” ]; var今日=新日期(2019,3,12); var month=today.getMonth(); var last3个月=[] 对于(i=0;i<3;i++){ var newMonth=(today.getMonth()-i); var newYear=today.getFullYear(); monthInWords=monthNames[新月];
如果(Newmonthy)你的答案与我的答案几乎相同,但返回的是5个月,而不是3个月。或者使用完整的角度框架…为像这样简单的东西提出一个库有点奇怪this@VikingCode为什么你认为这很奇怪?我对你的观点很感兴趣。库是一组工具,通常是一大组工具(读取文件)您可以导入到项目中,以使代码不那么复杂,并将功能封装在正确的软件中。但在这种情况下,导入库没有额外的价值。您可以用vanilla js编写较短的代码,并使您的项目免受不必管理的额外依赖。@VikingCode感谢您。:)这是唯一完美的答案,这是完美的答案。
201704,201703,201702,201701
function getLast3Months() {

  var monthNames = ["January", "February", "March", "April", "May", "June",
    "July", "August", "September", "October", "November", "December"
  ];

  var today = new Date(2019,3,12);
  var month=today.getMonth();
  var last3Months = []

  for (i = 0; i < 3; i++) {
      var newMonth=(today.getMonth() - i);
      var newYear=today.getFullYear();

      monthInWords=monthNames[newMonth];
      if(newMonth<0){

       newYear=today.getFullYear() - 1;
       monthInWords=monthNames[12+newMonth];
      }
     var newDate= new Date(today.getDate(), newMonth, newYear);
     last3Months.push(monthInWords + ' - ' +newYear  );
  }
  return last3Months;
}

window.document.write(getLast3Months());