使用 JavaScript 获取一个月中的天数:问题

发布于 2024-12-27 05:05:19 字数 1244 浏览 0 评论 0原文

我试图使用 JavaScript 获取一个月中的天数,但遇到了问题。我目前正在使用提到的解决方案 此处

这是我的代码:

 function getDays(month,year){

    if(month=="" || year==""|| year=="--Select--"){

        document. getElementById("days"). innerHTML ="";
        return;
    }

    var months= new Array();
    alert("Month in Function"+month);// To test.
    alert("Year in function"+year);
    months[0]="January";
    months[1]="February";
    months[2]="March";
    months[3]="April";
    months[4]="May";
    months[5]="June";
    months[6]="July";
    months[7]="August";
    months[8]="September";
    months[9]="October";
    months[10]="November";
    months[11]="December";
    var index=months.indexOf(month);
    alert("Index used"+index);
      var datebase = new Date(year,index,1); //nb: month = zerobased
      datebase.setDate(datebase.getDate()-1);

            // Also tried database=new Date(year, index, 0).getDate();


    document.getElementById("days").innerHTML =datebase.getDate();// This value is skewed.

}

我得到了该月各天的奇怪值,例如,2012 年 4 月给了我 31 天,2011 年 3 月给了我 28 天。对我在这里可能搞砸的事情的任何帮助都会有帮助。

I'm trying to get the days of a month using JavaScript and face a problem. I'm currently using a solution mentioned here.

Here's my code :

 function getDays(month,year){

    if(month=="" || year==""|| year=="--Select--"){

        document. getElementById("days"). innerHTML ="";
        return;
    }

    var months= new Array();
    alert("Month in Function"+month);// To test.
    alert("Year in function"+year);
    months[0]="January";
    months[1]="February";
    months[2]="March";
    months[3]="April";
    months[4]="May";
    months[5]="June";
    months[6]="July";
    months[7]="August";
    months[8]="September";
    months[9]="October";
    months[10]="November";
    months[11]="December";
    var index=months.indexOf(month);
    alert("Index used"+index);
      var datebase = new Date(year,index,1); //nb: month = zerobased
      datebase.setDate(datebase.getDate()-1);

            // Also tried database=new Date(year, index, 0).getDate();


    document.getElementById("days").innerHTML =datebase.getDate();// This value is skewed.

}

I get weird values for the days of the month for example, April 2012 gives me 31 days and March 2011 gives me 28 days. Any help on what I could be messing up here would be helpful.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

好听的两个字的网名 2025-01-03 05:05:19

您正在使用 new Date(year,index,1) 构建日期,例如,如果您传递 "March",则会给出 3 月 1 日。然后减去一天即可得到 2 月 28 日。然后你说三月有28天。显然,这是一个错误的结论。

您需要使用以下方式构建:

new Date(year, index + 1, 1);
// so, build e.g. 1 April when "March" is passed, then
// subtract one to get last day of March

You're building the date using new Date(year,index,1), which gives e.g. the 1st of March if you pass "March". You then subtract one day to get the 28st of February. Then you say that March has 28 days. This is a wrong conclusion, obviously.

You'd need to build using:

new Date(year, index + 1, 1);
// so, build e.g. 1 April when "March" is passed, then
// subtract one to get last day of March
别念他 2025-01-03 05:05:19

几个月前,我必须做同样的事情 - 获取给定一年中一个月的天数。有很多解决方案,但我认为这是最短、最好的一种。

 function DaysInMonth(Month,Year){
     return (32-new Date(Year,Month,32).getDate());     
 }

该函数有两个参数:

  1. Month - 这是一个从 0 到 11 的整数值,其中 0 表示
    1 月和 11 日 - 12 月
  2. 年份 - 年份

尝试一下:

  DaysInMonth(1,2012)
  DaysInMonth(2,2012)

A few months ago I have to do the same thing - get the number of days that a month have in a given year. There are a lot of solutions, but the this one I think is the shortest and nicest one.

 function DaysInMonth(Month,Year){
     return (32-new Date(Year,Month,32).getDate());     
 }

The function has two parameters:

  1. Month - this is a integer value from 0 to 11, where 0 indicates
    January and 11 - December
  2. Year - the year

Try it:

  DaysInMonth(1,2012)
  DaysInMonth(2,2012)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文