如何将“Sun, Oct 3”类日期字符串与当前日期比较并实现过期元素删除
问题解答
是否需要格式转换?
必须转。你从h2里拿到的是纯字符串,直接和Date类型的当前日期比大小完全没用,JS不会自动识别字符串里的日期含义做逻辑比对。
完整实现代码
// 获取当前日期,清零时分秒避免当天时间影响比对结果 const today = new Date(); today.setHours(0, 0, 0, 0); // 获取所有h2元素 const dateHeaders = document.getElementsByTagName("h2"); for (const header of dateHeaders) { // 提取h2内的日期文本,转成Date对象 const dateStr = header.textContent.trim(); const targetDate = new Date(dateStr); // 同样清零目标日期的时分秒 targetDate.setHours(0, 0, 0, 0); // 比对时间戳,当前日期晚于目标日期就删除该h2元素 if (today.getTime() > targetDate.getTime()) { header.remove(); } }
补充说明
- 拿h2文本的时候别用
innerHTML,用textContent更稳妥,避免h2里嵌套其他标签时拿到多余的HTML代码 - 如果你的日期是跨年的,需要手动补全对应年份,比如把日期字符串改成
${dateStr} 2024再丢给Date构造器,不然默认会把缺失年份的日期解析到当前年,跨年场景会出错。
内容的提问来源于stack exchange,提问作者gnook
相关产品推荐
相关产品推荐

