【前端】报表常用的前一月、后一月、前一周、后一周。相应js以及展示页面

一、报表常用的前一月、后一月、前一周、后一周。

点前一月能跳转到前一个月,再点后一个月能显示本月(1号凌晨到今天23:59:59),再点后一个月能提示已是最新月份,并且时间不变。

点前一周能跳转到前一周,再点后一周能显示本周(周一到今天23:59:59),再点后一周能提示已是最新周,并且时间不变。

功能可以实现,代码有点冗余,不过删删减减还可以优化一下。

可以点击这里下载html展示页面和相应的js文件

展示页面如下:

二、没积分下载的,具体用到的时间处理的工具js,可以从这里拷贝。

相应的时间处理函数

(1)判断查询日期是否大于今天

function isAfterToday(str) {
    //当天凌晨
    var timeStamp = new Date(new Date().setHours(0, 0, 0, 0));
    //一天是86400秒   故n天前的时间戳为
    var tomorrow = timeStamp.getTime()+ 86400000;
    console.log("tomorrow:"+tomorrow);
    return new Date(str).getTime()-tomorrow>= 0;
}

(2)判断查询日期是否大于今天

function isThisMonth(str) {
    var year=new Date(str).getFullYear()-new Date().getFullYear()=== 0;
    var month=new Date(str).getMonth()-new Date().getMonth()=== 0;
    return year&&month;
}

(3)判断查询日期是否在当前周

function isThisWeek(str) {
    var now=new Date();
    var week = now.getDay(); //获取时间的星期数
    var minus = week ? week - 1 : 6;
    now.setDate(now.getDate() - minus); //获取minus天前的日期
    var monday=now;
    var year=monday.getFullYear();
    var month=change(monday.getMonth()+1);
    var day=change(monday.getDate());
    var today=year + "-" + month + "-" + day;
    var compareStr=GetMonday(str);
    console.log("today:"+today);
    console.log("compareStr:"+compareStr);
    return today===compareStr;
}

(4)获取到每月的第一天和最后一天

function getMonthFirstOrLaseDay(date,afterOrBefore){
    var month=date.getMonth()+1;  //当前月份,1-12
    var year = date.getFullYear();
    if(afterOrBefore==="before"){
        month=month-1;//前一个月份,12月时为-1,1月时为0
        if(month===0) {
            month=12;
            year=year-1;
        }
    }
    if(afterOrBefore==="after"){
        month=month+1;//后一个月份,12月时为1,1月时为0
        if(month===13){
            month=1;
            year=year+1;
        }

    }
    if (month < 10) {
        month = "0" + month;
    }
    var firstDay = year+'-' + month+'-' + "01"+" "+"00:00:00";
    var myDate = new Date(year, month, 0);
    var lastDay = year+'-' + month+'-' +  myDate.getDate()+" "+"23:59:59";
    console.log("firstDay:"+firstDay+",lastDay:"+lastDay);
    return {firstDay:firstDay,lastDay:lastDay}
}

(5)获取周一 

function GetMonday(ddReceive) {
    var dd=new Date(ddReceive);
    var week = dd.getDay(); //获取时间的星期数
    var minus = week ? week - 1 : 6;
    dd.setDate(dd.getDate() - minus); //获取minus天前的日期
    var y = dd.getFullYear();
    var m = dd.getMonth() + 1; //获取月份
    if (m < 10) {
        m = "0" + m;
    }
    var d = dd.getDate();
    if (d < 10) {
        d = "0" + d;
    }
    console.log("monday:"+y + "-" + m + "-" + d);
    return y + "-" + m + "-" + d;
}

(6)根据某一时间节点获取指定时间差时

/**
 * 根据某一时间节点获取指定时间差时间(年月日时分秒)(目前add的有bug,只支持默认,想算add操作可以将val设置为负数)
 * @param op 操作:add-表示在指定时间上加;其余情况为减
 * @param lev 指定操作目标:yy-年;mm-月;dd-天;hh-时;ii-分;ss-秒
 * @param val 根据指定时间递增或递减的值
 * @param date 指定时间,默认为当前
 * @param isFormat 是否格式化,false-以'-'分隔时间;true-以'/'分隔时间
 * @returns {string|*} 返回时间字符串
 */
function pStrDateTime(op, lev, val, date, isFormat) {
    var dt, sTime, str;
    date ? dt = new Date(date) : dt = new Date();
    // 当操作目标和值均存仔仔才处理时间
    if (lev && val) {
        switch (lev) {
            case "yy":
                op == "add" ? dt.setFullYear(dt.getFullYear() + val) : dt.setFullYear(dt.getFullYear() - val);
                break;
            case "mm":
                op == "add" ? dt.setMonth(dt.getMonth() + val) : dt.setMonth(dt.getMonth() - val);
                break;
            case "dd":
                op == "add" ? dt.setDate(dt.getDate() + val) : dt.setDate(dt.getDate() - val);
                break;
            case "hh":
                op == "add" ? dt.setHours(dt.getHours() + val) : dt.setHours(dt.getHours() - val);
                break;
            case "ii":
                op == "add" ? dt.setMinutes(dt.getMinutes() + val) : dt.setMinutes(dt.getMinutes() - val);
                break;
            case "ss":
                op == "add" ? dt.setSeconds(dt.getSeconds() + val) : dt.setSeconds(dt.getSeconds() - val);
                break;
        }
    }
    !isFormat ? str = "-" : str = "/";
    sTime = dt.getFullYear() + str + (dt.getMonth() + 1) + str + dt.getDate();
    sTime += " " + dt.getHours() + ":" + dt.getMinutes() + ":" + dt.getSeconds();
    sTime = _callbackNormTime(sTime);
    return sTime;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 抱歉,我作为一个语言模型,无法直接提供完整的代码,但是我可以给您一些实现该的思路和建议。 首先,您需要确定该财务模块需要包含哪些功能,例如收入、支出、结算等等。然后,您可以使用前端框架(如React、Vue)来构建用户界面,并使用Ajax或Fetch来与后端进行数据交互。 以下是一个简单的例子,展示如何使用React和Fetch实现从后端获取财务数据并在前端显示: ```javascript import React, { useState, useEffect } from 'react'; const Finance = () => { const [data, setData] = useState([]); useEffect(() => { const fetchData = async () => { const response = await fetch('/api/finance'); const json = await response.json(); setData(json); }; fetchData(); }, []); return ( <div> <h2>财务报表</h2> <table> <thead> <tr> <th>日期</th> <th>收入</th> <th>支出</th> <th>结余</th> </tr> </thead> <tbody> {data.map((item) => ( <tr key={item.date}> <td>{item.date}</td> <td>{item.income}</td> <td>{item.expense}</td> <td>{item.balance}</td> </tr> ))} </tbody> </table> </div> ); }; export default Finance; ``` 在上面的代码中,我们使用了useState和useEffect来管理组件的状态和副作用。在useEffect中,我们使用fetch来获取后端API的数据,然后更新组件的状态以反映最新的财务报告。 当然,这只是一个简单的例子,实际开发中可能需要更复杂的逻辑和组件。同时,您还需要考虑如何保证数据的安全性和完整性,例如防止SQL注入和数据篡改等问题。因此,在实际开发中,建议您使用一些成熟的后端框架和库,并遵循最佳实践来确保系统的安全和性能。 ### 回答2: 要编写一个网吧管理系统的财务模块代码,首先需要明确财务模块的功能和需求。财务模块主要涉及网吧的收入和支出管理,包括统计每日、每月、每年的收入情况,计算网吧的盈利情况等。 在前端编写网吧管理系统财务模块的代码时,可以使用HTML、CSS和JavaScript等前端技术来构建用户界面和实现相关功能。 首先,可以使用HTML和CSS创建一个财务管理的页面,包括显示每日、每月、每年的收入统计数据的格,以及计算网吧盈利情况的部分。 接着,使用JavaScript编写逻辑代码,实现以下功能: 1. 查询每日、每月、每年的收入数据:从后端数据库获取指定时间段的收入数据,并将数据显示在相应格中。 2. 计算网吧的盈利情况:根据收入和支出的数据,计算网吧的盈利金额,并在界面上显示出来。 3. 导出财务报表:将收入和支出的数据导出为Excel或PDF格式的报表,供网吧管理人员查看或打印。 在编写这些功能代码时,需要注意前端与后端的数据交互。可以通过AJAX等方式与后端进行数据的传递和处理,保证前端能够准确获取后端提供的数据,并将数据显示在网页上。 此外,还需要考虑用户体验和界面设计,可以使用Bootstrap等前端框架,美化界面并提升用户操作的友好性。 总之,通过以上的前端技术和编码实现,可以开发出一个功能完善的网吧管理系统财务模块,用于管理网吧的收入和支出情况,提高管理效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值