年月日借位相减,输入两个时间点的 年月日

举报
拿我格子衫来 发表于 2022/03/18 00:33:28 2022/03/18
【摘要】 /** * 计算两个日期的时长,返回x年x月x日,传入时间戳 */export function getDateDurations (startDate, endDate) { let startYear = parseInt(moment(startDate).format('YYYY')) let startMonth = pa...

  
  1. /**
  2. * 计算两个日期的时长,返回x年x月x日,传入时间戳
  3. */
  4. export function getDateDurations (startDate, endDate) {
  5. let startYear = parseInt(moment(startDate).format('YYYY'))
  6. let startMonth = parseInt(moment(startDate).format('MM'))
  7. let startDay = parseInt(moment(startDate).format('DD'))
  8. let endYear = parseInt(moment(endDate).format('YYYY'))
  9. let endMonth = parseInt(moment(endDate).format('MM'))
  10. let endDay = parseInt(moment(endDate).format('DD')) + 1
  11. let currentMonthDays = 31
  12. if ([1,3,4,7,8,10,12].includes(startMonth)) {
  13. currentMonthDays = 31
  14. } else if ([4,6,9,11].includes(startMonth)) {
  15. currentMonthDays = 30
  16. } else if (startMonth === 2) {
  17. currentMonthDays = 28
  18. }
  19. let monthJ1 = false // 是否需要向上级月份借位
  20. let yearJ1 = false // 是否需要向上级年份借位
  21. let mDay = endDay - startDay
  22. let mMonth = endMonth - startMonth
  23. let mYear = endYear - startYear
  24. if (mDay < 0) {
  25. monthJ1 = true
  26. mDay = mDay + currentMonthDays
  27. }
  28. if (monthJ1) {
  29. mMonth = mMonth - 1
  30. }
  31. if (mMonth < 0) {
  32. yearJ1 = true
  33. mMonth = mMonth + 12
  34. }
  35. if (mYear > 0) {
  36. if (yearJ1) {
  37. mYear = mYear - 1
  38. }
  39. }
  40. return (mYear ? mYear + '年' : '') + (mMonth ? mMonth + '月' : '') + (mDay ? mDay + '日' : '')
  41. }

 

文章来源: fizzz.blog.csdn.net,作者:拿我格子衫来,版权归原作者所有,如需转载,请联系作者。

原文链接:fizzz.blog.csdn.net/article/details/103263481

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。