js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前

下面是“js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前”的完整攻略:

步骤一:获取时间戳

在开始计算与当前时间相差多久之前,我们需要获取时间戳。时间戳是指自 1970 年 1 月 1 日 00:00:00 UTC 起至现在的总秒数。

我们可以通过 JavaScript 的 Date 对象获取当前的日期时间,然后将其转换为时间戳。示例代码如下:

let time = new Date().getTime(); // 获取当前时间戳

步骤二:计算时间差

得到了时间戳后,就可以开始计算与当前时间相差多久了。只需要将当前时间戳与被比较时间戳相减即可得到两者之间的时间差。

这里需要注意的是,计算出来的时间差是以毫秒为单位的。我们需要将其转换为相应的天数、小时数、分钟数或秒数。示例代码如下:

let diff = (new Date().getTime() - timestamp) / 1000; // 时间差,单位为秒

let day_diff = Math.floor(diff / 86400); // 计算天数
let hour_diff = Math.floor((diff % 86400) / 3600); // 计算小时数
let minute_diff = Math.floor((diff % 3600) / 60); // 计算分钟数
let second_diff = Math.floor(diff % 60); // 计算秒数

步骤三:根据时间差显示字符串

计算出时间差后,我们需要根据不同的时间差显示不同的时间字符串。例如:1 天前、5 小时前等。

这里我们可以使用 JavaScript 的模板字符串语法,结合上面计算出来的时间差,来生成相应的时间字符串。示例代码如下:

let time_str = '';
if (day_diff > 0) {
  time_str = day_diff + ' 天前';
} else if (hour_diff > 0) {
  time_str = hour_diff + ' 小时前';
} else if (minute_diff > 0) {
  time_str = minute_diff + ' 分钟前';
} else {
  time_str = second_diff + ' 秒前';
}

示例详解

下面通过两个示例来详细讲解一下这个攻略。

示例一

假设当前时间是 2021 年 9 月 15 日 14:30:30,我们需要计算出 2021 年 9 月 12 日 16:25:30 距离当前时间相差多久。

第一步,获取时间戳:

let timestamp = new Date('2021-09-12 16:25:30').getTime(); // 1631454330000

第二步,计算时间差:

let diff = (new Date().getTime() - timestamp) / 1000; // 286200
let day_diff = Math.floor(diff / 86400); // 3
let hour_diff = Math.floor((diff % 86400) / 3600); // 21
let minute_diff = Math.floor((diff % 3600) / 60); // 2
let second_diff = Math.floor(diff % 60); // 0

第三步,根据时间差显示字符串:

let time_str = '';
if (day_diff > 0) {
  time_str = day_diff + ' 天前';
} else if (hour_diff > 0) {
  time_str = hour_diff + ' 小时前';
} else if (minute_diff > 0) {
  time_str = minute_diff + ' 分钟前';
} else {
  time_str = second_diff + ' 秒前';
}
console.log(time_str); // 3 天前

示例二

假设当前时间是 2021 年 9 月 15 日 19:30:00,我们需要计算出 2021 年 9 月 15 日 19:29:55 距离当前时间相差多久。

第一步,获取时间戳:

let timestamp = new Date('2021-09-15 19:29:55').getTime(); // 1631742595000

第二步,计算时间差:

let diff = (new Date().getTime() - timestamp) / 1000; // 5
let day_diff = Math.floor(diff / 86400); // 0
let hour_diff = Math.floor((diff % 86400) / 3600); // 0
let minute_diff = Math.floor((diff % 3600) / 60); // 0
let second_diff = Math.floor(diff % 60); // 5

第三步,根据时间差显示字符串:

let time_str = '';
if (day_diff > 0) {
  time_str = day_diff + ' 天前';
} else if (hour_diff > 0) {
  time_str = hour_diff + ' 小时前';
} else if (minute_diff > 0) {
  time_str = minute_diff + ' 分钟前';
} else {
  time_str = second_diff + ' 秒前';
}
console.log(time_str); // 5 秒前

总之,这个攻略可以帮助我们实现类似微信朋友圈中时间显示的效果,让用户更直观地了解信息更新的时间。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • javascript for-in有序遍历json数据并探讨各个浏览器差异

    JavaScript for-in 有序遍历 JSON 数据并探讨各个浏览器差异 什么是JavaScript for-in? JavaScript for-in 语句循环遍历对象的属性。语句还会遍历可枚举的属性,其中不仅包括对象自己的属性,还包括从它的原型继承的属性。 如何使用JavaScript for-in有序遍历JSON数据? 在 JavaScript…

    JavaScript 2023年5月27日
    00
  • 使用js正则表达式验证文件扩展名方法实例

    使用 JavaScript 正则表达式验证文件扩展名是一个常见的前端开发需求,下面是一份完整的攻略,供参考。 什么是文件扩展名? 在计算机领域,文件扩展名是指在文件名的末尾添加的一个或多个字符,用于表示该文件的类型。例如,“.txt” 表示文本文件,“.png” 表示图像文件,“.html” 表示网页文件等等。 验证文件扩展名的方法 在 JavaScript…

    JavaScript 2023年5月27日
    00
  • 一看就懂:jsonp详解

    一看就懂:jsonp详解 什么是JSONP JSONP(JSON with Padding)是一种跨域的数据交互方式。它利用了script标签没有跨域限制的特点,通过动态创建script标签来请求服务器返回数据,并通过回调函数来处理返回的数据。 JSONP的原理 在客户端动态创建一个script标签,其中的src属性指向服务器端数据接口,并在接口地址中指定回…

    JavaScript 2023年5月27日
    00
  • Javascript中获取对象的原型对象的方法小结

    获取对象的原型对象是JavaScript中常见的操作,下面介绍一些获取对象的原型对象的方法。 方法一:使用Object.getPrototypeOf Object.getPrototypeOf() 方法返回指定对象的原型(内部[[Prototype]]属性的值)。 示例代码: const obj = {}; const proto = Object.getP…

    JavaScript 2023年5月27日
    00
  • 几句话带你理解JS中的this、闭包、原型链

    下面我将为你详细讲解“几句话带你理解JS中的this、闭包、原型链”的完整攻略。 this 在Javascript中,this关键字代表函数执行时的上下文环境,它的值取决于函数被调用时的方式。如果函数是作为对象的方法被调用,this指向该对象,如果函数作为普通函数被调用,this指向全局对象window。 在ES6中,箭头函数使用词法作用域,且绑定了外层函数…

    JavaScript 2023年6月10日
    00
  • Javascript RegExp ignoreCase 属性

    JavaScript RegExp的ignoreCase属性 JavaScript的RegExp对象中的ignoreCase属性是一个布尔值,表示正则表达式是否具有忽略大小写标志i。当ignoreCase属性为true时,正则表达式将忽略匹配时的大小写。 语法 ignoreCase属性的语法如下: RegExp.ignoreCase 示例1:使用ignore…

    JavaScript 2023年5月11日
    00
  • 用Python制作mini翻译器的实现示例

    让我来给您详细讲解一下如何用Python制作mini翻译器的实现示例以及相关的攻略。 1. 确定翻译API 在制作mini翻译器之前,我们需要确定一个翻译API来获取翻译结果。目前市面上已经有很多翻译API可供选择,比如百度、Google、有道等,这里我们以百度翻译API为例。 在使用百度翻译API之前,需要先在百度翻译开放平台进行注册和创建应用,获取到相应…

    JavaScript 2023年6月11日
    00
  • js实现前面自动补全位数的方法

    下面是详细讲解“js实现前面自动补全位数的方法”的完整攻略。 1. 简介 前置自动补全位数的方法就是指在数字前面添加相应数量的“0”,使得数字的位数达到指定的长度。在程序开发中,通常需要对数字进行前置自动补全位数操作,比如在电子表格中,在文件名中,签到表单中等等。 JavaScript提供了多种方法来完成这个任务,我们将介绍其中两种方法。 2. 方法一:利用…

    JavaScript 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部