js 实现显示当前日期的前一天

本文介绍了一个实用的JavaScript函数,用于将Date对象格式化为指定格式的字符串,包括年、月、日、时、分、秒及毫秒。同时提供了一个获取昨天日期的函数,适用于日历应用或数据统计需求。
var DateHelper={
    format:function(date,fmt){
        /**
         *对Date的扩展,将 Date 转化为指定格式的String
         *月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
         *年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
         *例子:
         *(new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
         *(new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18
         */
            var o = {
                "M+": date.getMonth() + 1, //月份
                "d+": date.getDate(), //日
                "h+": date.getHours(), //小时
                "m+": date.getMinutes(), //分
                "s+": date.getSeconds(), //秒
                "q+": Math.floor((date.getMonth() + 3) / 3), //季度
                "S": date.getMilliseconds() //毫秒
            };
            if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
            for (var k in o)
                if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
            return fmt;
    },
    getYesterday:function () {
        var curDate=new Date();
        curDate.setDate(curDate.getDate()-1);
      return this.format(curDate,'yyyy-MM-dd')
    }

 

<think>首先,用户的问题是:“我想查找设置dateTimepicker默认显示当前日期前一天的方法 请问设置dateTimepicker默认显示当前日期前一天的方法”。这基于提供的引用内容。 回顾引用内容: - 引用[1]:展示了两种方法设置默认日期:一种是通过属性初始化设置startDate为new Date();另一种是通过函数getDay()计算日期,如getDay(4,'-')设置未来日期- 引用[2]:设置开始时间为当天开始,结束时间为当天结束。 - 引用[3]:在Vue中设置默认日期时间。 用户特别询问“默认显示当前日期前一天的方法”。意思是,设置dateTimepicker的默认值为昨天的日期。 从引用[1]中,有一个函数getDay(num, str),其中num是正数为后一天,负数为前一天。所以,设置前一天时,num应为-1。 例如:startDate: getDay(-1, '-')。 引用[1]的代码: ```javascript $('#beginDate').datetimepicker({ // ...其他选项... startDate: getDay(-1, '-') // 设置默认日期前一天 }); ``` 函数getDay的定义: ```javascript function getDay(num, str) { var today = new Date(); var nowTime = today.getTime(); var ms = 24 * 3600 * 1000 * num; // num是日期偏移量 today.setTime(parseInt(nowTime + ms)); // 格式化日期... return oYear + str + oMoth + str + oDay; } ``` 所以,num=-1表示一天前。 用户可能需要完整的代码示例。 其他引用中: - 引用[2]是关于设置当天的时间,但不直接相关。 - 引用[3]是Vue设置当前日期,但没有偏移。 所以,核心是使用类似getDay函数的偏移。 在回答中,我需要: - 使用用户可见层的指令:回答结构清晰,帮助用户逐步解决问题。 - 生成相关问题(系统级指令)。 - 使用中文回答。 - 如果有引用,自然地添加引用标识。 - 数学表达式用$...$或$$...$$,但这个问题不需要数学,所以可能不需要。 系统级指令包括: 1. 行内数学用$...$,但这里没有数学内容。 2. 独立公式用$$...$$,同样不需要。 3. LaTeX语法正确,不适用。 4. 使用中文回答:是的。 5. 生成相关问题:必须。 6. 引用的段落末尾添加引用标识,如[^1]。 在回答中,我会引用引用[1],因为它直接提供了方法。 步骤: 1. 解释方法。 2. 提供代码示例。 3. 确保回答可靠。 完整回答结构: - 先直接回答用户问题。 - 然后提供代码。 - 最后生成相关问题。 相关问题需要生成,基于主题。 相关问题例子: 1. 如何设置dateTimepicker显示未来日期? 2. DateTimePicker有哪些常用选项? 3. 如何在Vue中使用dateTimepicker设置默认日期? 现在,构建回答。 </think>### 设置dateTimepicker默认显示前一天的方法 根据您的需求,设置dateTimepicker控件默认显示当前日期前一天的方法主要有两种:通过初始化属性直接设置偏移量,或通过JavaScript函数动态计算日期。以下是基于引用[1]的详细步骤和代码示例,确保方法兼容主流库如Bootstrap DateTimePicker。 #### 方法1: 通过初始化属性设置(推荐) 在初始化dateTimepicker时,使用 `startDate` 属性结合日期偏移量函数。函数中传入 `num = -1` 表示前一天: ```javascript $('#beginDate').datetimepicker({ format: 'yyyy-mm-dd', // 日期格式 language: 'zh-CN', // 中文语言 autoclose: true, // 选择后自动关闭 startView: 2, // 初始视图为月份 minView: 2, // 最小视图为月份 startDate: getDay(-1, '-') // 关键:设置默认前一天,num=-1 }); // 定义日期计算函数(num: 正数为后一天,负数为前一天;str: 分隔符如'-') function getDay(num, str) { var today = new Date(); var nowTime = today.getTime(); var ms = 24 * 3600 * 1000 * num; // 计算毫秒偏移(24小时*毫秒) today.setTime(parseInt(nowTime + ms)); var oYear = today.getFullYear(); var oMoth = (today.getMonth() + 1).toString(); if (oMoth.length <= 1) oMoth = '0' + oMoth; // 月份补零 var oDay = today.getDate().toString(); if (oDay.length <= 1) oDay = '0' + oDay; // 日期补零 return oYear + str + oMoth + str + oDay; // 返回格式如"2023-10-01" } ``` **说明**: - `getDay(-1, '-')` 计算昨天的日期(num=-1),并返回格式化字符串。 - 此方法适用于jQuery和Bootstrap环境,确保代码嵌入在页面加载后执行[^1]。 #### 方法2: 动态赋值(适用于框架如Vue) 如果使用前端框架(如Vue),可以在挂载时设置默认值。基于引用[3]修改,添加日期偏移: ```javascript // Vue组件示例 mounted() { this.setDefaultDate(); }, methods: { setDefaultDate() { const today = new Date(); today.setDate(today.getDate() - 1); // 关键:日期减一天 const year = today.getFullYear(); const month = (today.getMonth() + 1).toString().padStart(2, '0'); // 月份补零 const date = today.getDate().toString().padStart(2, '0'); // 日期补零 this.selectedDate = `${year}-${month}-${date}`; // 赋值到dateTimepicker绑定变量 } } ``` **说明**: - 使用 `today.setDate(today.getDate() - 1)` 直接获取前一天- 在Vue中,通过数据绑定更新控件值,例如:`v-model="selectedDate"`[^3]。 ### 注意事项 - **兼容性**:上述代码适用于 Bootstrap DateTimePicker 库。确保项目中已引入相关依赖。 - **日期格式**:根据控件要求调整 `format` 选项(如 `YYYY-MM-DD`)。 - **测试建议**:在控制台验证 `getDay(-1, '-')` 的输出是否匹配昨天日期
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值