如何在JavaScript日历配置选项中自动将day值设置为当前日期?
如何在JavaScript日历配置选项中自动将day值设置为当前日期?
嘿,别担心,这事儿其实不难~你之前尝试用getDate()可能只是没处理好日期的格式化,毕竟日历插件要求的是YYYY-MM-DD这种标准格式,直接拿原生Date对象的方法返回值拼接容易出问题,比如月份会是0-11的数字,日期也可能是个位数,得补零才行。
我给你两种简单的实现方式,你可以按需选择:
方式一:手动拼接格式化日期
这种方式逻辑清晰,适合新手理解每一步的操作:
- 先创建当前日期的实例
- 分别提取年、月、日,处理成两位数格式
- 拼接成插件要求的字符串格式
把下面的代码整合到你的配置里就行:
(function($) { "use strict"; // 生成格式化后的当前日期 const today = new Date(); const year = today.getFullYear(); // 月份是0-11,所以要加1,padStart补零确保是两位数 const month = String(today.getMonth() + 1).padStart(2, '0'); // 日期补零确保是两位数 const day = String(today.getDate()).padStart(2, '0'); const formattedToday = `${year}-${month}-${day}`; var options = { events_source: 'event.php', view: 'month', tmpl_path: 'tmpls/', tmpl_cache: false, day: formattedToday, // 替换成自动生成的当前日期 onAfterEventsLoad: function(events) { if(!events) { return; } var list = $('#eventlist'); list.html(''); $.each(events, function(key, val) { $(document.createElement('li')) .html('<a href="' + val.url + '">' + val.title + '</a>') .appendTo(list); }); }, // 这里补充你代码中未写完的其他配置项 }; // 后续的日历插件初始化代码... })(jQuery);
方式二:用原生API快速格式化
如果觉得手动拼接太麻烦,也可以用toISOString()方法快速得到标准格式的日期,代码更简洁:
(function($) { "use strict"; // 封装成函数,方便复用 function getTodayFormatted() { // toISOString会返回类似"2024-05-20T12:34:56.789Z"的字符串,拆分后取前半部分就是YYYY-MM-DD return new Date().toISOString().split('T')[0]; } var options = { events_source: 'event.php', view: 'month', tmpl_path: 'tmpls/', tmpl_cache: false, day: getTodayFormatted(), // 直接调用函数获取当前日期 onAfterEventsLoad: function(events) { if(!events) { return; } var list = $('#eventlist'); list.html(''); $.each(events, function(key, val) { $(document.createElement('li')) .html('<a href="' + val.url + '">' + val.title + '</a>') .appendTo(list); }); }, // 这里补充你代码中未写完的其他配置项 }; // 后续的日历插件初始化代码... })(jQuery);
这两种方法都能自动把day设置成当天的日期,你可以挑顺手的用~
备注:内容来源于stack exchange,提问作者Onur YILDIRIM
相关产品推荐
相关产品推荐

