js -- 时间转年月日

复制代码
    /**
     * 时间转年月日
     * @param sdate 开始的时间
     * @param edate 结束的时间
     * @returns {*}
     */
    function day2ymrStr2(sdate, edate) {
        var day2ymrStr = "";
        var date1 = new Date(edate);
        var date2 = new Date(sdate);
        var y = 0, m = 0, d = 0;
        var y1 = date1.getFullYear();
        var m1 = date1.getMonth();
        var d1 = date1.getDate();
        var y2 = date2.getFullYear();
        var m2 = date2.getMonth();
        var d2 = date2.getDate();
        if (d2 > d1) {
            m1 = m1 - 1;
            d1 = d1 + 30;//这里每个月按30天计算,也可以根据月份计算天数
        }
        if (m2 > m1) {
            y1 = y1 - 1;
            m1 = m1 + 12;
        }
        d = (d1 - d2) + 1;
        m = m1 - m2;
        y = Math.abs(y1 - y2);
        if (y != 0) day2ymrStr += y + "年";
        if (m != 0) day2ymrStr += m + "个月";
        if (d != 0) day2ymrStr += d + "天";
        if (isNaN(d) || isNaN(m) || isNaN(y)) {
            return 0 + "天";
        }
        return day2ymrStr;
    }


// 举个栗子:

console.info(day2ymrStr2("2017-10-22","2017-10-23"));

// 结果: 2天
复制代码

 

posted @   喵喵扑  阅读(2812)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示