【问题标题】:Date.getDay() javascript returns wrong dayDate.getDay() javascript 返回错误的日期
【发布时间】:2012-11-13 10:42:45
【问题描述】:

您好,我是 javascript 新手 我有这样的javascript代码

alert(DATE.value);
var d = new Date(DATE.value);
var year = d.getFullYear();
var month = d.getMonth();
var day = d.getDay();
alert(month);
alert(day);
if(2012 < year < 1971 | 1 > month+1 > 12 | 0 >day > 31){
    alert(errorDate);
    DATE.focus();
    return false;
}

例如:DATE.value = "11/11/1991"

当我打电话给alert(day); 时,它会告诉我3
当我打电话给alert(d); 时,它会返回正确的信息。

【问题讨论】:

标签: javascript date


【解决方案1】:

使用.getDate 而不是.getDay

getDay 返回的值是一个与星期几对应的整数:0 表示周日,1 表示周一,2 表示周二,以此类推。

【讨论】:

  • 这个函数的设计者没有把它叫做getDayOf Week,真是愚蠢。不,那太明显了。
  • @AndroidDev 我同意!此外,.getDate 会返回完整日期,而不仅仅是日期。
  • 这里还有更多:函数 getMonth 返回一个从 0 到 11 的整数,其中 0 表示 1 月,11 表示 12 月。他们一定在那边抽了一些很重的东西
  • 这里还有更多:getYear() 实际上是减去 1900 的年份!
  • 完全不一致的设计~Date.getYear() okay, Date.getMonth() okay, Date.getDate() what?
【解决方案2】:

getDay() 返回星期几。但是,您可以使用 getDate() 方法。

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/getDay

【讨论】:

    【解决方案3】:

    getDay() 将为您提供星期几。您正在寻找getDate()

    【讨论】:

      【解决方案4】:

      我遇到了类似的问题。 date.getMonth() 返回范围为 0 to 11 的索引。一月是0。如果您创建一个新的date()-object 并且您想获取有关服装日期而不是当前日期的信息,您只需将月份减少1

      像这样

      function getDayName () {
      var year = 2016;
      var month = 4;
      var day = 11;
      
      var date = new Date(year, month-1, day);
      var weekday = new Array("sunday", "monday", "tuesday", "wednesday",
                          "thursday", "friday", "saturday");
      
      return weekday[date.getDay()];
      }
      

      【讨论】:

      • 真棒斯文...这是我的解决方案,在蛾子上减一...谢谢。
      【解决方案5】:

      从现在开始,您可能希望对 Date 对象使用以下函数:

          function dayOf(date)
          {
              return date.getDate();
          }
      
          function monthOf(date)
          {
              return date.getMonth() + 1;
          }
      
          function yearOf(date)
          {
              return date.getYear() + 1900;
          }
      
          function weekDayOf(date)
          {
              return date.getDay() + 1;
          }
          
          var date = new Date("5/15/2020");
          console.log("Day: " + dayOf(date));
          console.log("Month: " + monthOf(date));
          console.log("Year: " + yearOf(date));

      【讨论】:

        【解决方案6】:
        function formatDate(date, callback)
        {
        var weekday = new Array("Sunday", "Monday", "Tuesday", "Wednesday",     "Thursday", "Friday", "Saturday");
        var day = weekday[date.getDay()];
        console.log('day',day);
        var d = date.getDate();
        var hours = date.getHours();
        ampmSwitch = (hours > 12) ? "PM" : "AM";
        if (hours > 12) {
            hours -= 12;
        
        }
        else if (hours === 0) {
            hours = 12;
        }
        var m = date.getMinutes();
        var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
        var month = months[date.getMonth()];
        var year = date.getFullYear();
        newdate = day + ', ' + month + ' ' + d + ',' + year + ' at ' + hours + ":" + m + " " + ampmSwitch
        callback(newdate)
        }
        

        并使用此代码调用

        date="Fri Aug 26 2016 18:06:01 GMT+0530 (India Standard Time)"
        formatDate(date,function(result){
           console.log('Date=',result);
         });
        

        【讨论】:

          【解决方案7】:

          当你使用.getDay()函数时,这个考虑月份的数字从0开始而不是从1开始,那么如果你使用日期new Date(2021-11-04),.getDay()函数将考虑 12 月的第 4 天,而不是 11 月...

          然后,要获得 11 月的第 4 天,您需要将“2021-10-04”传递给 Date() 类。

          【讨论】:

          • 正如 Ash 下面提到的,“getDay() 将给你星期几。你正在寻找 getDate()。”
          【解决方案8】:

          这也可能是所使用的技术和浏览器 ES5 兼容的问题。

          我在 React Native 中开发应用程序时遇到了这样的问题。

          return `${date.getDay()} ${month}, ${date.getFullYear()}`;
          

          return `${date.getDate()} ${month}, ${date.getFullYear()}`;
          

          【讨论】:

            猜你喜欢
            • 2019-04-13
            • 2015-04-25
            • 2011-07-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-11-02
            相关资源
            最近更新 更多