文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么利用moment处理时间戳并计算时间的差值

2023-06-30 09:53

关注

这篇“怎么利用moment处理时间戳并计算时间的差值”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么利用moment处理时间戳并计算时间的差值”文章吧。

项目使用nodejs写服务端,有个功能就是统计代理服务器流量,然后把统计的数据通过echarts渲染到页面。

当然统计数据这里用到了 定时器,在使用的是

 var  schedule =  require( 'node-schedule');

有兴趣的同学可以在npm上搜一搜关于js定时任务的事,其实都大同小异,差不多都是运用corn表达式。

以下是我的 定时从代理服务器获取数据 并存库。

schedule.scheduleJob('*/15 * * * * * ', function () {            console.log('timer !!!!!!!!!!');            var dataObj1 = {};            iplists.forEach(function (ele, index) {                var req = http.request("http://" + ele + ":14567/stat", function (res) {                    dataObj1.time = new Date(res.headers.date);                    dataObj1.ip = req.getHeader("host").split(":")[0];                    res.setEncoding('utf-8');                    var tempData = '';                    res.on('data', function (chunk) {                        tempData += chunk;                        var resultObj = JSON.parse(tempData);                        dataObj1.flow = resultObj.bw15s;                        var flow1 = new flowrank1({                            ip: dataObj1.ip,                            flow: dataObj1.flow,                            time: new Date(dataObj1.time)                        });                        flow1.save(function (err, flow1) {                            if (err) {                                console.log(err);                                return;                            }                        });                    });                });                req.on("error", function (err) {                    console.log(err);                });                req.end()            });        });

现在来展示 需要根据前端传过来的 时间戳 来筛选出数据的代码,处理时间我用到了moment这个类库,基本包含了时间所有的处理方法。

总结以下moment的几个常用的函数:

moment().startOf('year');    // set to January 1st, 12:00 am this yearmoment().startOf('month');   // set to the first of this month, 12:00 ammoment().startOf('quarter');  // set to the beginning of the current quarter, 1st day of months, 12:00 ammoment().startOf('week');    // set to the first day of this week, 12:00 ammoment().startOf('isoWeek'); // set to the first day of this week according to ISO 8601, 12:00 ammoment().startOf('day');     // set to 12:00 am todaymoment().startOf('date');     // set to 12:00 am todaymoment().startOf('hour');    // set to now, but with 0 mins, 0 secs, and 0 msmoment().startOf('minute');  // set to now, but with 0 seconds and 0 millisecondsmoment().startOf('second');  // same as moment().milliseconds(0);moment().diff(Moment|String|Number|Date|Array);moment().diff(Moment|String|Number|Date|Array, String);moment().diff(Moment|String|Number|Date|Array, String, Boolean);var a = moment([2008, 9]);var b = moment([2007, 0]);a.diff(b, 'years');       // 1a.diff(b, 'years', true); // 1.75moment().add(Number, String);moment().add(Duration);moment().add(Object);
var moment = require('moment');var starttime = moment(moment.unix(parseInt(req.query.starttime)).toDate());console.log("==============");console.log(moment(moment.unix(parseInt(req.query.starttime)).toDate()));var endtime = moment(moment.unix(parseInt(req.query.endtime)).toDate());console.log(moment(moment.unix(parseInt(req.query.endtime)).toDate()));console.log(endtime.diff(starttime, 'hour'));console.log(endtime.diff(starttime, 'months'));console.log(endtime.diff(starttime, 'months'));if (endtime.diff(starttime, 'hour') <= 24) {    console.log("flowrank1");    flowrank1.find({        ip: req.query.ip,        time: {            $gt: moment.unix(req.query.starttime).toDate(),            $lte: moment.unix(req.query.endtime).toDate()        }    },    {        _id: 0,        ip: 1,        flow: 1,        time: 1    },    function(err, doc) {        if (err) {            console.log("err!!!!!")            console.log(err);            return res.end(JSON.stringify(retcode.operateDbErr));        }        var result = retcode.res_ok;        result.data = doc;        console.log(doc)        res.end(JSON.stringify(result));    })} else if (endtime.diff(starttime, 'months') == 0) {    console.log("flowrank2!!!!");    flowrank2.find({        ip: req.query.ip,        time: {            $gt: moment.unix(req.query.starttime).toDate(),            $lte: moment.unix(req.query.endtime).toDate()        }    },    {        _id: 0,        ip: 1,        flow: 1,        time: 1    },    function(err, doc) {        if (err) {            console.log("err!!!!!")            console.log(err);            return res.end(JSON.stringify(retcode.operateDbErr));        }        var result = retcode.res_ok;        result.data = doc;        console.log(doc)        res.end(JSON.stringify(result));    })} else if (endtime.diff(starttime, 'months') >= 1) {    console.log("in flowrank3");    flowrank3.find({        ip: req.query.ip,        time: {            $gt: moment.unix(req.query.starttime).toDate(),            $lte: moment.unix(req.query.endtime).toDate()        }    },    {        _id: 0,        ip: 1,        flow: 1,        time: 1    },    function(err, doc) {        if (err) {            console.log("err!!!!!")            console.log(err);            return res.end(JSON.stringify(retcode.operateDbErr));        }        var result = retcode.res_ok;        result.data = doc;        console.log(doc)        res.end(JSON.stringify(result));    })} else {    return res.end(JSON.stringify(retcode.res_err));}

以上就是关于“怎么利用moment处理时间戳并计算时间的差值”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯