pickadate插件下拉日历日期显示异常技术求助
问题排查与修复
核心错误:日期格式转换顺序颠倒
你的unixDateTOString函数返回的日期格式是日/月/年,但pickadate配置的格式是mm/dd/yyyy(月/日/年),这导致日期解析时出现混乱:
// 原函数返回格式:date/month/year var formattedTime = date + '/' + month + '/' + year;
比如选择2023年12月27日,函数返回27/12/2023,而pickadate会将第一个数值当成月份,27超出12的范围,会被自动转换为下一年的3月(27-2*12=3),最终显示错误日期。
修复方案
修改unixDateTOString函数,调整月份和日期的顺序,返回mm/dd/yyyy格式,同时补零确保两位格式匹配picker配置:
function unixDateTOString(unix_timestamp) { var dateObj = new Date(unix_timestamp); var year = dateObj.getFullYear(); var month = String(dateObj.getMonth() + 1).padStart(2, '0'); var date = String(dateObj.getDate()).padStart(2, '0'); var formattedTime = month + '/' + date + '/' + year; return formattedTime; }
其他优化点
- HTML输入框重复class属性:输入框写了两次
class属性,属于无效语法,需合并:
<!-- 修正前 --> <input type="text" class="form-control" class="igameDate" id="gameDate2" ...> <!-- 修正后 --> <input type="text" class="form-control igameDate" id="gameDate2" ...>
- 重复配置项清理:初始化picker时重复写了
selectYears: true和selectMonths: true,可删除重复项简化代码。 - 初始化值格式校验:确保
gameDateJs和gameDateJsAway的格式为mm/dd/yyyy,避免picker初始化时解析错误。
内容的提问来源于stack exchange,提问作者GKR
相关产品推荐
相关产品推荐

