0

週、年をHTMLで印刷したい、つまり43,2013. また、prevボタンを押すと印刷42,2013され、次に押すと44,2013.

私は月、年、つまりOctober,2013次の前の月を取得できますが、週は実行できません。

これが私の月のコードです。週のコードを書くのを手伝ってください。

function monthNav(nav) {

  if(nav == 'prev') {

    var newMonth = cur_dat.getMonth() - 1;
    var newYear = cur_dat.getFullYear();
    if(newMonth < 0) {
      newMonth = 11;
      newYear -= 1;
    }

    cur_dat.setMonth(newMonth);
    cur_dat.setFullYear(newYear);
    curMonthYear = month[newMonth] + ", " + newYear;
    $("#mNav").html(curMonthYear);


  } else {

    var newMonth = cur_dat.getMonth() + 1;
    var newYear = cur_dat.getFullYear();
    if(newMonth > 11) {
      newMonth = 0;
      newYear += 1;
    }

    if(newYear == curYear && newMonth > curMonth) {
      return false;
    }
    cur_dat.setMonth(newMonth);
    cur_dat.setFullYear(newYear);
    curMonthYear = month[newMonth] + ", " + newYear;
    document.getElementById('periodVal').value=curMonthYear;
    $("#mNav").html(curMonthYear);

  }

}
4

3 に答える 3

1

これを試して -

function getWeeks(d) {
 var first = new Date(d.getFullYear(),0,1); //start of the year
 var dayms = 1000 * 60 * 60 * 24;
 var numday = ((d - first)/dayms)
 var weeks = Math.ceil((numday + first.getDay()+1) / 7) ; 
 return weeks
}
alert(getWeeks(new Date("1 Dec 2012"))); //end of the year     

ここでコードを確認してくださいhttp://jsbin.com/ugesex/29/edit

于 2013-10-28T06:06:18.137 に答える
0

rubyist の関数は日付の取得に問題なく機能し、Math.ceil を Math.floor に変更しただけで問題なく動作しました。元のコードを少しきれいにする自由を取りました。

function weekNav(nav) {

//just create a +1 or -1 valued variable here so you dont
//have to write the same code over agian.
  if (nav == 'prev') {
    var state = -1;
  } else {
    var state = 1;
  }

  var d = new Date();
  var newWeek = cur_dat.getWeek(d) + state;
  var newYear = cur_dat.getFullYear() + state;

  if (newWeek < 0) {
    newWeek = 52;
    newYear -= 1;
  } else if (newWeek > 52) {
    newWeek = 0;
    newYear += 1;
  }
  //display to HTML like monthNav()
}
/* Editted this function to adjust for last few days of the year */
function getWeeks(d) {
  var first = new Date(d.getFullYear(),0,1);
  var dayms = 1000 * 60 * 60 * 24;
  var numday = ((d - first)/dayms);
  var getDay = (numday + first.getDay()+1 )/ 7;
  var weeks = Math.round(getDay);     
  if ((numday+first.getDay()+1/7) > 365) {
    weeks++;
  }
  return weeks;
}
于 2013-10-28T07:01:53.560 に答える