在Javascript中设置接下来6个月的月份和年份值

在Javascript中设置接下来6个月的月份和年份值,javascript,Javascript,我正在为我正在开发的纯iPhone网站使用一个相当不错的iPhone日期控件: 我想创建的一个轮子基本上是接下来的6个月,显示月份和年份。为了硬编码,我使用了: var monthsYears = { '05-2010': 'Jun 2010', '06-2010': 'Jul 2010', '07-2010': 'Aug 2010', '08-2010': 'Sep 2010', '09-2010': 'Oct 2010', '10-

我正在为我正在开发的纯iPhone网站使用一个相当不错的iPhone日期控件:

我想创建的一个轮子基本上是接下来的6个月,显示月份和年份。为了硬编码,我使用了:

var monthsYears = { 
    '05-2010': 'Jun 2010', 
    '06-2010': 'Jul 2010', 
    '07-2010': 'Aug 2010', 
    '08-2010': 'Sep 2010', 
    '09-2010': 'Oct 2010', 
    '10-2010': 'Nov 2010' 
};
如果我选择第一个
'05-2010':'Jun 2010'

05
是月份值
2010
是年份,
Jun
是月份名称


但很明显,这是没有用的,因为下个月它将不起作用!但我很困惑如何让它动态运行。感谢您的帮助。

Javascript
Date
对象具有您所需的所有API

var monthsYears = (function() {
  var d = new Date(), rv = {},
    months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
  d.setDate(1); // handle February!!
  for (var n = 1; n <= 6; ++n) {
    var mn = d.getMonth() + 1;
    mn = (mn < 10 ? '0' : '') + mn;
    rv[ '' + mn + '-' + d.getFullYear()] =
      months[d.getMonth()] + ' ' + d.getFullYear();
    d.setMonth(d.getMonth() + 1);
  }
  return rv;
})();
var monthseares=(函数(){
var d=new Date(),rv={},
月份=['1月'、'2月'、'3月'、'4月'、'5月'、'6月'、'7月'、'8月'、'9月'、'10月'、'11月'、'12月'];
d、 setDate(1);//处理二月!!

对于(var n=1;n而言,在将一个月添加到截至31日的一个月的最后一天时,应避免以下问题:

var monthsYears = (function () {
   var result = {};
   var d = new Date();
   var monthsStr = [
      'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 
      'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
   ];
   var month = d.getMonth();
   var year = d.getFullYear();
   var padding = '';

   for (i = 0; i <= 5; i++) {
      padding = month < 9 ? '0' : '';
      result[padding + (month + 1) + '-' + year] = monthsStr[month] + ' ' + year;

      if (++month > 11) {
         month = 0;
         year++;
      }
   }

   return result;
})();
var monthswears=(函数(){
var result={};
var d=新日期();
var monthsStr=[
‘一月’、‘二月’、‘三月’、‘四月’、‘五月’、‘六月’,
‘七月’、‘八月’、‘九月’、‘十月’、‘十一月’、‘十二月’
];
var month=d.getMonth();
var year=d.getFullYear();
变量填充=“”;
对于(i=0;i 11){
月份=0;
年份++;
}
}
返回结果;
})();

如果日期是每月的31日,它是否能正常工作,因为它将使用
setMonth()
?…尝试使用
新日期('2010-01-31')
…它将跳过“二月”。是的,这是一个很好的方法。谢谢!(我推迟“日期”对象以了解一年的结束时间,因为我不相信自己!)@尖刻的:哈哈!不相信自己是一个很好的习惯:)…使用
setDate(1)
是个好主意。这样更整洁。