vue对时间戳判断昨天今天过去

逃离我推掉我的手 2022-11-25 11:45 373阅读 0赞

需求背景

最近有这么个需求,需要再vue中对日期进行判断,从而显示某些数据是昨日还是今日

解决方案

  1. <el-card class="box-card">
  2. <div slot="header" class="clearfix">
  3. <span>招标信息 <el-tag>{
  4. {date|formatDate(this)}}</el-tag></span>
  5. <!-- <el-button style="float: right; padding: 3px 0" type="text">操作按钮</el-button>-->
  6. </div>
  7. <div v-for="o in tableData" :key="o.openId" class="text item">
  8. <el-link :href=o.url><i class="el-icon-circle-plus-outline"></i>{
  9. {o.createTime|formatDate2(this)}} {
  10. {o.tenderName }}</el-link>
  11. </div>
  12. </el-card>

我的思路,利用时间格式中的日期,也就是Date.getDate()进行判断。
关于vue获取今天是周几时间格式,获取周几的请看上一篇vue转换时间格式的过滤器

  1. formatDate2(date,vm) { //当前时间格式化处理
  2. let str = "";
  3. if(new Date(date).getDate() === new Date().getDate()){
  4. str="(今日)";
  5. }else if(new Date(date).getDate() === (new Date().getDate()-1)){
  6. str="(昨日)";
  7. }
  8. else if(new Date(date).getDate() === (new Date().getDate()+1)){
  9. str="(明日)";
  10. }
  11. return str;
  12. }

当然,也可以自己扩展某些想法:

  1. if(new Date(date).getDate() < new Date().getDate()){
  2. str="(过去)";
  3. }

效果预览

在这里插入图片描述

全部代码

应@Tu蜀黍 要求,放上全部代码供参考(代码已做非API请求处理,直接加载json数据)。

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>TFS</title>
  6. <meta name="renderer" content="webkit">
  7. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  8. <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  9. <meta charset="UTF-8">
  10. <!-- import CSS -->
  11. <link rel="stylesheet" href="//cdn.staticfile.org/element-ui/2.13.2/theme-chalk/index.css">
  12. </head>
  13. <body>
  14. <div id="app">
  15. <el-card class="box-card">
  16. <div slot="header" class="clearfix">
  17. <span>招标信息 <el-tag>{
  18. {date|formatDate(this)}}</el-tag></span>
  19. <!-- <el-button style="float: right; padding: 3px 0" type="text">操作按钮</el-button>-->
  20. </div>
  21. <div v-for="o in tableData" :key="o.openId" class="text item">
  22. <el-link :href=o.url><i class="el-icon-circle-plus-outline"></i>{
  23. {o.createTime|formatDate2(this)}} {
  24. {o.tenderName }}</el-link>
  25. </div>
  26. </el-card>
  27. <el-card class="box-card">
  28. <div slot="header" class="clearfix">
  29. <span>政策信息</span>
  30. </div>
  31. <div v-for="o in policyData" :key="o.openId" class="text item">
  32. <el-link :href=o.url><i class="el-icon-circle-plus-outline"></i>{
  33. {o.policyName }}</el-link>
  34. </div>
  35. </el-card>
  36. </div>
  37. </body>
  38. <!-- import Vue before Element -->
  39. <script src="//cdn.staticfile.org/vue/2.6.11/vue.min.js"></script>
  40. <!-- import JavaScript -->
  41. <script src="//cdn.staticfile.org/element-ui/2.13.2/index.js"></script>
  42. <script src="//cdn.staticfile.org/element-ui/2.13.2/locale/zh-CN.min.js"></script>
  43. <script> let vm = new Vue({ el: '#app', data: function() { return { date: new Date(), tableData: [{ "createTime":1616601600000,"openId":"787946","tenderName":"广州市南沙区政务服务数据管理局2021年广州市南沙区全区信息化项目概算评估服务采购项目(CZ2021-0272)招标公告","url":"http://ggzy.gz.gov.cn/jyywzfcgzfcgcggg/787946.jhtml"},{ "createTime":1616601600000,"openId":"787943","tenderName":"广州市公安局南沙区分局社会面综合治安临时安保服务采购项目(CZ2021-0087)中标结果公告","url":"http://ggzy.gz.gov.cn/jyywzfcgzfcgggjggg/787943.jhtml"}], policyData: [{ "createTime":1609257600000,"policyName":"政府督查工作条例","url":"http://www.e-gov.org.cn/article-175519.html"},{ "createTime":1609171200000,"policyName":"全国公共卫生信息化建设标准与规范(试行)","url":"http://www.e-gov.org.cn/article-175507.html"},{ "createTime":1609171200000,"policyName":"工业互联网标识管理办法","url":"http://www.e-gov.org.cn/article-175506.html"}] } }, methods:{ setZero(a) { //设置小于10的数字在加0 return a < 10 ? "0" + a : a; }, }, filters:{ formatDate(date,vm) { //当前时间格式化处理 let str = ""; let weekDay = [ "星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" ]; str += vm.setZero(date.getFullYear()) + "年"; //获取年份 str += vm.setZero(date.getMonth() + 1) + "月"; //获取月份 str += vm.setZero(date.getDate()) + "日"; //获取日 str += " " + weekDay[date.getDay()]; //获取星期 /*str += " " + vm.setZero(date.getHours()) + ":"; //获取时 str += " " + vm.setZero(date.getMinutes()) + ":"; //获取分 str += vm.setZero(date.getSeconds()); //获取秒*/ return str; }, formatDate2(date,vm) { //当前时间格式化处理 let str = date; if(new Date(date).getDate() === new Date().getDate()){ str="(今日)"; }else if(new Date(date).getDate() === (new Date().getDate()-1)){ str="(昨日)"; } else if(new Date(date).getDate() === (new Date().getDate()+1)){ str="(明日)"; } return str; } } }) </script>
  44. </html>

发表评论

表情:
评论列表 (有 0 条评论,373人围观)

还没有评论,来说两句吧...

相关阅读

    相关 昨天今天明天

    在即将毕业之季,写下自己的昨天今天明天。 昨天: 四年凭着自己努力,来到了四川成都一所不被人所赞赏的普通学校西华大学。也许你们会提到,这还需要努力???简直太搞笑了!在大多

    相关 昨天今天,明天

       06年哦,对我来说,真是个动荡的一年,或者也可以说真是个丰富多彩的一年哦, 算算,总共工作过4家公司,当然,里面还包括给人做的兼职,(到现在还没有拿到报酬呢,不知道现在为