前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >vue 日期时间转为XX时间前展示

vue 日期时间转为XX时间前展示

作者头像
朝雾轻寒
修改于 2020-06-09 09:18:30
修改于 2020-06-09 09:18:30
1.9K00
代码可运行
举报
运行总次数:0
代码可运行

问题描述

项目中常常需要将发布的文章时间展现为“XX时间前”,如“1分钟前”、“2小时前”、“3天前”等等。

解决方案

1.vue-timeago
安装timeago.js
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yarn add vue-timeago

# 或者

npm i vue-timeago
引入timeago.js
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import Vue from 'vue'

import VueTimeago from 'vue-timeago'



Vue.use(VueTimeago, {

    name: 'Timeago', // Component name, `Timeago` by default

    locale: 'zh-CN', // Default locale

    locales: {

        'zh-CN': require('date-fns/locale/zh_cn'),

        ja: require('date-fns/locale/ja')

    }



})
使用
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<timeago :datetime="time"></timeago>



<!--60秒更新 -->

<timeago :datetime="time" :auto-update="60"></timeago>



<!-- 自定义 locale -->

<timeago :datetime="time" locale="zh-CN"></timeago>
展现效果
2.自定义date.js
自定义工具
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**

 * @desc 格式化日期字符串

 * @param { String} - 日期时间字符串

 * @returns { String } 格式化后的日期字符串

 */

export function formatDate(value) {

    // 注意ie和firefox浏览器时间格式兼容性

    let timestamp=new Date(value.replace(/-/g,"/").getTime();

    // 补全为13位

    let arrTimestamp = (timestamp + '').split('');

    for (let start = 0; start < 13; start++) {

      if (!arrTimestamp[start]) {

        arrTimestamp[start] = '0';

      }

    }

    timestamp = arrTimestamp.join('') * 1;

    let minute = 1000 * 60;

    let hour = minute * 60;

    let day = hour * 24;

    let month = day * 30;

    let now = new Date().getTime();

    let diffValue = now - timestamp;

    // 如果本地时间反而小于变量时间

    if (diffValue < 0) {

      return '不久前';

    }

    // 计算差异时间的量级

    let yearC = diffValue / (month*12);

    let monthC = diffValue / month;

    let weekC = diffValue / (7 * day);

    let dayC = diffValue / day;

    let hourC = diffValue / hour;

    let minC = diffValue / minute;

    // 数值补0方法

    let zero = function (value) {

      if (value < 10) {

        return '0' + value;

      }

      return value;

    };

    // 使用

    if (yearC >= 1) {

      // 超过1年,直接显示年月日

      return (function () {

        let date = new Date(timestamp);

        return date.getFullYear() + '年' + zero(date.getMonth() + 1) + '月' + zero(date.getDate()) + '日';

      })();

    } else if (monthC >= 1) {

      return parseInt(monthC) + '月前';

    } else if (weekC >= 1) {

      return parseInt(weekC) + '周前';

    } else if (dayC >= 1) {

      return parseInt(dayC) + '天前';

    } else if (hourC >= 1) {

      return parseInt(hourC) + '小时前';

    } else if (minC >= 1) {

      return parseInt(minC) + '分钟前';

    }

    return '刚刚';

  }
页面引入
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 import { formatDate } from '~/plugins/date';
方法定义
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 getFormatDate(val){

          return formatDate(val);



 }
html使用
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{{getFormatDate(publishTime)}} #publishTime为日期时间字符串
展示效果

小结

在使用vue-timeago无法去除“大约”这个字样,只得自定义js。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 朝雾轻寒的博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
什么,你还在用 momentJs 处理相对时间
我想,下面这段代码,你是不是在开发中常常这样使用来计算距离现在过去了多长时间: import moment from 'moment' // 61k (gzipped:19.k) function
前端修罗场
2023/10/07
2010
什么,你还在用 momentJs 处理相对时间
将datetime时间转化成类似于*** 时间前的描述字符串
项目官网地址。关于 react 版本可以看timeago-react,关于Python的版本,可以看 timeago.
用户7293182
2022/01/20
6270
用Java实现处理日期的工具类——常用日期处理方法
日期处理是开发过程中经常遇到的问题,以下是总结了开发中常用的方法,代码如下: import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * * @项目名 ssh * @功能 处理日期的工具类 * @类名 DateUtils * @作者 Java自学通 * @日期 Aug 30, 20113:35:30 PM * @版本 1.
用户1289394
2018/02/27
1.2K0
js时间戳转换日期格式和日期计算
一、时间戳转换日期 1 function formatDate(datetime) { 2 // 获取年月日时分秒值 slice(-2)过滤掉大于10日期前面的0 3 var year = datetime.getFullYear(), 4 month = ("0" + (datetime.getMonth() + 1)).slice(-2), 5 date = ("0" + datetime.getDate()).
半指温柔乐
2018/09/11
29.2K0
常用工具类之:DateUtils
import java.text.ParseException; import java.text.ParsePosition; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.TimeZone; import org.joda.time.DateTime; /** * <p>
芈亓
2022/06/17
1.3K0
MySQL 获得当前日期时间(以及时间的转换)。[通俗易懂]
转载:http://blog.sina.com.cn/s/blog_6d39dc6f0100m7eo.html
全栈程序员站长
2022/11/10
5.2K0
Java 8 日期时间 API
java 8 通过发布新的Date-Time API (JSR 310)来进一步加强对日期和时间的处理。
一滴水的眼泪
2020/09/21
1.1K0
Java时间工具类(把日期时间转换成xx秒前、xx分钟前、xx小时前...)
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class DateUtils { private static final long ONE_MINUTE = 60; private static final long ONE_HOUR = 3600; private static
用户7999227
2021/09/19
2.3K0
在 MySQL 中处理日期和时间(三)
在本系列关于日期和时间的前两部分中,我们介绍了 MySQL 的五种时态数据类型。现在是时候将注意力转移到 MySQL 的许多面向日期或时间的函数了。
MySQL技术
2022/06/08
3.8K0
在 MySQL 中处理日期和时间(三)
分享 8 个关于 new Date() 的冷知识,你需要了解下
你知道吗?“Safari”浏览器不支持“YYYY-MM-DD”形式的初始化时间。除它之外的很多浏览器,例如Chrome浏览器,都完美支持这种格式。
前端达人
2023/08/31
3160
分享 8 个关于 new Date() 的冷知识,你需要了解下
Python处理日期方法大全、三十种方法
Python学习者
2023/12/12
1800
Js Date对象
Date对象 基本方法 创建Date对象:new Date() 返回年份:getFullYear() 返回月份 (0 ~ 11):getMonth() 返回一个月中的某一天 (1 ~ 31):getDate() 返回 Date 对象的小时 (0 ~ 23):getHours() 返回 Date 对象的分钟 (0 ~ 59 ):getMinutes() 返回 Date 对象的秒钟 (0 ~ 59):getSeconds() 返回 Date 对象的毫秒 (0 ~ 999):getMillisec
hss
2022/02/25
10.6K0
一文搞定Mysql日期时间函数
日期和时间函数部分也是我们日常工作中使用频率比较高的一部分。这一篇我们主要讲讲Mysql里面的日期时间相关的函数,不同数据库之间基本相同,只会有个别函数的差异。大家掌握一个数据库的,其他的遇到不会的,直接查就可以了。
张俊红
2020/02/01
8.2K0
bootstrap日期时间控件
链接:http://pan.baidu.com/s/1sl56aw1 密码:jc2y 页面代码
全栈程序员站长
2022/08/31
3.3K0
bootstrap日期时间控件
java countdowntimer_Android 倒计时CountDownTimer[通俗易懂]
可能在没有遇到CountDownTimer之前,我们都是创建Handle来开启异步线程来处理,如果你现在使用,我只能说太菜了,官方已经为我们封装好了一个类,爽的很,一起来看
全栈程序员站长
2022/10/02
7220
Python基础模块:日期与时间模块@time+datetime
终于,回家之后准备好好学习一下,从python基础模块开始,今天为大家准备的是python的日期与时间处理模块time和datetime。
可以叫我才哥
2021/08/05
1.6K0
Apache Commons Lang之日期时间工具类
FastDateFormat是一个快速且线程安全的时间操作类,它完全可以替代SimpleDateFromat。因为是线程安全的,所以你可以把它作为一个类的静态字段使用。构造方法为protected,不允许直接构造它的对象,可以通过工厂方法获取。FastDateFormat之所以是线程安全的,是因为这个类是无状态的:内部的成员在构造时就完成了初始化,并在对象存活期,不提供任何API供外界修改他们。
Abalone
2022/07/14
1.2K0
Python日期时间前后推移
在开发某个功能时需要计算当前时间往前推移N个月、半年、三年的时间,现有的datetime.timedelta()只支持日、小时、分、秒、毫秒推移,不支持月与年。所以自己实现了一下月份与年的推移,并结合datetime.timedelta(),最终实现完整的日期时间前后推移功能。
法号戒糖
2024/01/19
3070
30例 | 一文搞懂python日期时间处理
本文旨在讲解datetime模块中datetime类的使用方法。datetime对象是 date 与 time 的结合体,涵盖了date和time对象的所有信息。
朱卫军 AI Python
2022/04/02
5150
[864]mysql日期时间函数
sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。看下面的例子就明白了:
周小董
2022/04/13
6.8K0
推荐阅读
相关推荐
什么,你还在用 momentJs 处理相对时间
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文