// 获取日期
function getDay(d, num) {const date = new Date(new Date(d).setDate(new Date(d).getDate() + num))const year = date.getFullYear()const month = (date.getMonth() + 1 + "").padStart(2, "0")const day = (date.getDate() + "").padStart(2, "0")return `${year}-${month}-${day}`
}// 是否是闰年
function isLeap(year){return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0
}// 返回去年日期
function lastYearDate(d) {const date = new Date(d)const year = date.getFullYear()const month = date.getMonth() + 1const day = date.getDate()const lastYear = year - 1const thisYearisLeap = isLeap(year)const lastYearIsLeap = isLeap(lastYear)// 特殊情况:去年是否是闰年 或 今年是闰年且为12月31日if (lastYearIsLeap || (thisYearisLeap && month == 12 && day == 31)) return getDay(d, -366)return getDay(d, -365)
}// 测试
const date = "2021-2-10"
console.log(lastYearDate(date)) // 2020-02-10
const date1 = "2021-3-1"
console.log(lastYearDate(date1)) // 2020-02-29
const date2 = "2021-3-10"
console.log(lastYearDate(date2)) // 2020-03-09const date3 = "2020-1-10"
console.log(lastYearDate(date3)) // 2019-02-10
const date4 = "2020-2-29"
console.log(lastYearDate(date4)) // 2019-03-01
const date5 = "2020-3-10"
console.log(lastYearDate(date5)) // 2019-03-11
const date7 = "2020-12-31"
console.log(lastYearDate(date7)) // 2019-12-31const date6 = "2023-3-1"
console.log(lastYearDate(date6)) // 2022-03-01

JS获取去年日期(包含闰年逻辑)相关推荐

  1. layer日期和时间组件限制最大日期和 js获取昨天日期

    layer日期和时间组件限制最大日期 html: <input class="layui-input" id="test" autocomplete=&q ...

  2. js根据判断改变html字符串长度,JS获取字符串长度(包含汉字)的简单示例

    这篇文章主要为大家详细介绍了JS获取字符串长度(包含汉字)的简单示例,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编罗X来看看吧. 方法一: /** * * @p ...

  3. js获取农历日期、节气等

    js获取农历日期.节气等信息的插件–solarlunar https://github.com/yize/solarlunar#readme 点我直达 npm install solarlunar / ...

  4. js获取指定日期的前一年(需要判断闰年和平年)

    如果要考虑二月份的情况,就需要注意闰年和平年的区别.闰年的二月份有29天,平年的二月份只有28天. 以下是一种考虑闰年和平年的实现方法: //获取指定日期的前一年getYearLast(dateStr ...

  5. 小程序 : js获取今日日期、加日期、减日期; 判断今日 、判断昨日

    获取今日,日期加.日期减 效果图: 选择日期大于今日时 .js代码 Page({/*** 页面的初始数据*/data: {choseDate: '', // 选择的时间week:'', //星期几on ...

  6. JS获取/格式化日期(附JS获取昨日、今日、上周、本周、上月、本月方法)

    JS中处理日期时间常用Date 对象,故本文将依次按照 创建Date对象 -> 获取日期时间 -> 格式化日期时间 的顺序进行讲解,且已封装好格式化日期等方法可直接使用.若有不正请多指教. ...

  7. js处理日期的一些整理(js获取给定日期前一天的日期)

    var date = new Date();alert(date);//获取当前时间 alert(date.getFullYear());//获取当前年分 alert(date.getMonth()) ...

  8. JS 获取指定日期的前几天或者几天

    例如获取2021-06-21后1天日期 /*** JavaScript 获取指定日期的前几天或者后几天的日期* @param date {string} 日期 如:2021-06-21* @param ...

  9. JS获取指定日期前后N天的日期、前N个月日期、后N个月日期

    今天做项目遇到了,获取相对于当前日期前30天的时间,结合网上资料,做了一份整理. 一.获取指定日期前或者后指定间隔时间代码 function getNowFormatDate(sdate,interv ...

最新文章

  1. 【牛腩新闻发布系统】开始前端03
  2. bootstrap datepicker Uncaught TypeError: Cannot call method 'split' of undefined问题
  3. DedeCMS生成首页html静态文件的教程
  4. 深入探究.Net Core Configuration读取配置的优先级
  5. MPLS-L3×××中的公网访问
  6. ASP.NET MVC中如何在客户端进行必要的判断
  7. 7 ida pro 网盘_IDA分析iOS网络协议
  8. 华为深圳数据分析外包
  9. KV杀毒软件创始人离世
  10. 用html代码制作一个歌单,歌单.html · 李岢恩/MusicClub - Gitee.com
  11. 海康威视摄像头用yolo检测行人的一些问题
  12. 计算机重装后不能启动怎么办,电脑重装系统后开不了机怎么处理
  13. 全网最细的Spring教程(一)
  14. PHP和Python该如何抉择?现在PHP还有前景吗?
  15. Java代理模式及动态代理详解
  16. 一文8个步骤从0到1实现Python+Selenium自动化测试项目实战【建议收藏】
  17. 年味究竟是淡了还是浓了?
  18. IOS自动获取短信验证码
  19. protege5.0基础教程
  20. C语言 —— for循环(一)

热门文章

  1. 图论算法 有图有代码 万字总结 向前辈致敬
  2. catia三边倒角_CATIA怎么倒角
  3. Android 固件,刷固件,ROM包
  4. 总有你不知道的,你说呢?
  5. PHP用户注册页面测试用例,用户注册界面测试用例
  6. Vijos 1166题:木牛流马
  7. 上线一月破千万,孙俪都是其粉丝,揭秘花粉儿APP的成长秘诀
  8. 移动互联网时代代驾app开发未来走向功能定制化
  9. matlab显示全球海岸线
  10. 不合格高校教师的自我总结(机器人教学和工作小结)