setDateday + 1返回错误的天

如何解决setDateday + 1返回错误的天

| 为什么这样做:
startDate.setDate(startDate + 1);
生成此奇怪的订单(在下个月初中断):
7,27,28,30,**1,4,3,** 6,7,10,9,12,
更新(更多代码):
renderWeekFromMonday : function(date) {
        var dayContainer = $(\'#day\');

        // clear div
        dayContainer.empty();

        // Render days
        for (var i = 0; i <= 7; i++) {

            // Get mondday day (1-31)
            var day = date.getDate();

            // Today
            var t = new Date();

            // Create dayobject for usage inside for loop
            var d = new Date(date);

            // Render 7 days (1 week)
            for (var i = 0; i < 7; i++) {

                // New day (+1)
                d.setDate(day + i)
                console.info(d.getDate());

                // Create html
                var span = $(\"<span>\").addClass(\"calElement\").attr(\"time\",d.getTime())
                var w = 25;
                span.html(\"<span class=dayNumber>\" + d.getDate() + \"</span><br>\" + this.dayNames[d.getDay()]).css(\"width\",w);
                //span.html(\"<span class=dayNumber>\" + d.getDate() + \"</span>\");

                // Append day
                dayContainer.append(span);
            }
        }
    },
    

解决方法

只是一个猜测,也许您正在寻找:
startDate.setDate(startDate.getDate() + 1);
如果
startDate
Date
对象,则
startDate + 1
没有多大意义。 看到更新的代码之后:您的问题很可能是因为您有两个嵌套循环,两个循环都以
i
递增。对其中一个循环使用其他变量。     ,您的代码看起来不错-我使用的是FF4,日期计算看起来正确。我已经在此处发布了一个示例的代码:http://jsfiddle.net/EbNcr/2/ 是否有用于测试的特定浏览器或日期来获得奇怪的结果? (我希望我可以以此作为评论,但是我不认为我对此享有声誉...)     ,感谢您的帮助。我只是有一个简单的复制和粘贴错误(两个循环)。我将最终代码放入一个简单的jquery插件(由一些oder插件插入)
var MILLIS_IN_DAY = 86400000;
var MILLIS_IN_WEEK = MILLIS_IN_DAY * 7

jQuery.fn.calendarPicker = function(options) {

// --------------------------  start default option values --------------------------
options.date = new Date();
options.dayNames = [\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"];
options.firstDayOfWeek = 1;
options.showNavigation = true;

// --------------------------  end default option values --------------------------

var calendar = {

    changeDate : function(date) {
        // calculate new start date
        this.currentFirstDayOfWeek = this._firstDayOfWeek(date);

        // render days
        for (var i = 0; i < 7; i++) {
            // create dayobject
            var day = new Date(this.currentFirstDayOfWeek.getTime() + MILLIS_IN_DAY * i);

            // render container
            var span = $(\"<span>\").addClass(\"calElement\").attr(\"time\",day.getTime())

            // render day
            span.html(\"<span class=dayNumber>\" + day.getDate() + \"</span><br>\" + options.dayNames[day.getDay()]);

            if (day.getYear() == date.getYear() && date.getMonth() == day.getMonth() && day.getDate() == date.getDate())
                span.addClass(\"today\");
            if (day.getYear() == date.getYear() && day.getMonth() == date.getMonth() && day.getDate() == date.getDate())
                span.addClass(\"selected\");
            theDiv.append(span);

            // render navigation
            if (i == 0 && options.showNavigation) {
                var prevBtn = $(\"<span>\").addClass(\"prev\").html(\"prev\");
                var self = this;
                prevBtn.bind(\'click\',function() { self.prevWeek(); });
                theDiv.prepend(prevBtn);
            } else if (i == 6 && options.showNavigation) {
                var nextBtn = $(\"<span>\").addClass(\"next\").html(\"next\")
                var self = this;
                nextBtn.bind(\'click\',function() { self.nextWeek(); });
                theDiv.append(nextBtn);
            }
        }
    },/*
     * Go to the previous week relative to the currently displayed week
     */
    prevWeek : function() {
        //minus more than 1 day to be sure we\'re in previous week - account for daylight savings or other anomolies
        var newDate = new Date(this.currentFirstDayOfWeek.getTime() - (MILLIS_IN_WEEK / 6));
        this._clearCalendar();
        this.changeDate(newDate);
    },/*
     * Go to the next week relative to the currently displayed week
     */
    nextWeek : function() {
        //add 8 days to be sure of being in prev week - allows for daylight savings or other anomolies
        var newDate = new Date(this.currentFirstDayOfWeek.getTime() + MILLIS_IN_WEEK + (MILLIS_IN_WEEK / 7));
        this._clearCalendar();
        this.changeDate(newDate);
    },/*
     * returns the date on the first millisecond of the week
     */
    _firstDayOfWeek : function(date) {
        var midnightCurrentDate = new Date(date.getFullYear(),date.getMonth(),date.getDate());
        var adjustedDate = new Date(midnightCurrentDate);
        adjustedDate.setDate(adjustedDate.getDate() - this._getAdjustedDayIndex(midnightCurrentDate));

        return adjustedDate;
    },_clearCalendar : function() {
        theDiv.empty();
    },/*
     * gets the index of the current day adjusted based on options (e.g.firstDayofWeek)
     */
    _getAdjustedDayIndex : function(date) {

        var midnightCurrentDate = new Date(date.getFullYear(),date.getDate());
        var currentDayOfStandardWeek = midnightCurrentDate.getDay();
        var days = [0,1,2,3,4,5,6];
        this._rotate(days,this.options.firstDayOfWeek);

        return days[currentDayOfStandardWeek];
    },/*
     * rotate an array by specified number of places.
     */
    _rotate : function(a,p ) {
        for (var l = a.length,p = (Math.abs(p) >= l && (p %= l),p < 0 && (p += l),p),i,x; p; p = (Math.ceil(l / p) - 1) * p - l + (l = p)) {
            for (i = l; i > p; x = a[--i],a[i] = a[i - p],a[i - p] = x);
        }
        return a;
    },};

// Pass options
calendar.options = options;

// build the calendar on the first element in the set of matched elements.
var theDiv = this.eq(0);//$(this);
theDiv.addClass(\"calBox\");

// empty the div
theDiv.empty();

// entry point
calendar.changeDate(options.date);

return calendar;
};     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-