1         function timesFun(timesData) {
2 //如果时间格式是正确的,那下面这一步转化时间格式就可以不用了
3 var dateBegin = new Date(timesData); //将-转化为/,使用new Date
4 var dateEnd = new Date(); //获取当前时间
5 var dateDiff = dateEnd.getTime() - dateBegin.getTime(); //时间差的毫秒数
6 console.log(dateBegin,dateDiff, '111111111111')
7 console.log(dateEnd, dateDiff, '22222222222222')
8 var dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000)); //计算出相差天数
9 var leave1 = dateDiff % (24 * 3600 * 1000); //计算天数后剩余的毫秒数
10 var hours = Math.floor(leave1 / (3600 * 1000)); //计算出小时数
11 //计算相差分钟数
12 var leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数
13 var minutes = Math.floor(leave2 / (60 * 1000)); //计算相差分钟数
14 //计算相差秒数
15 var leave3 = leave2 % (60 * 1000); //计算分钟数后剩余的毫秒数
16 var seconds = Math.round(leave3 / 1000);
17 var timesString = "";
18
19 if (dayDiff != 0) {
20 timesString = dayDiff + "天之前";
21 } else if (dayDiff == 0 && hours != 0) {
22 timesString = hours + "小时之前";
23 } else if (dayDiff == 0 && hours == 0) {
24 timesString = minutes + "分钟之前";
25 }
26
27 return {
28 timesString: timesString
29 };
30 }
31 var timesData = "2022-01-25 01:25:02";
32 console.log(timesFun(timesData))
 1 function valideNull(val) {
2 return typeof val == 'undefined' || val == '' || val == null || JSON.stringify(val) == '{}';
3 }
4 function zeroize(num) {
5 return (String(num).length == 1 ? '0' : '') + num;
6 }
7
8 function timestampFormat(time) {
9 let timestamp = '';
10 if (!valideNull(time)) {
11 var arr = time.replace(/ |:/g, '-').split('-');
12 let date = new Date(Date.UTC(arr[0], arr[1] - 1, arr[2], arr[3] - 8, arr[4]));
13 timestamp = date.getTime() / 1000;
14 } else {
15 return '';
16 }
17
18
19 var curTimestamp = parseInt(new Date().getTime() / 1000); //当前时间戳
20 var timestampDiff = curTimestamp - timestamp; // 参数时间戳与当前时间戳相差秒数
21 var curDate = new Date(curTimestamp * 1000); // 当前时间日期对象
22 var tmDate = new Date(timestamp * 1000); // 参数时间戳转换成的日期对象
23 var Y = tmDate.getFullYear(),
24 m = tmDate.getMonth() + 1,
25 d = tmDate.getDate();
26 var H = tmDate.getHours(),
27 i = tmDate.getMinutes();
28 var nh = curDate.getHours();
29 var ch = nh - H;
30
31 // s = tmDate.getSeconds()
32 // var nh = curDate.getHours(),
33 if (timestampDiff < 60) {
34 // 一分钟以内
35 return '刚刚';
36 } else if (timestampDiff < 3600) {
37 // 一小时前之内
38 return Math.floor(timestampDiff / 60) + '分钟前';
39 } else if (curDate.getFullYear() == Y && curDate.getMonth() + 1 == m && curDate.getDate() == d) {
40
41 return ch + '小时前';
42 } else {
43 var newDate = new Date((curTimestamp - 86400) * 1000); // 参数中的时间戳加一天转换成的日期对象
44 var newDate2 = new Date((curTimestamp - (86400 * 2)) * 1000); //参数中的时间戳加两天转换成的日期对象
45 var newDate3 = new Date((curTimestamp - (86400 * 3)) * 1000); //参数中的时间戳加三天转换成的日期对象
46 if (newDate.getFullYear() == Y && newDate.getMonth() + 1 == m && newDate.getDate() == d) {
47 return '一天前 ';
48 } else if (newDate2.getFullYear() == Y && newDate2.getMonth() + 1 == m && newDate2.getDate() == d) {
49 return '两天前';
50 } else if (newDate3.getFullYear() == Y && newDate3.getMonth() + 1 == m && newDate3.getDate() == d) {
51 return '三天前';
52 } else {
53 return Y + '-' + zeroize(m) + '-' + zeroize(d);
54 }
55 }
56 }
57
58 var timesData = "2022-02-08 11:47:02";
59 console.log(timestampFormat(timesData))

js计算当前时间差的更多相关文章

  1. JS计算字符串所占字节数

    最近项目有个需求要用js计算一串字符串写入到localStorage里所占的内存,众所周知的,js是使用Unicode编码的.而Unicode的实现有N种,其中用的最多的就是UTF-8和UTF-16. ...

  2. js计算2个日期相差的天数,两个日期相差的天数,日期相隔天数

    js计算2个日期相差的天数,两个日期相差的天数,日期相隔天数 >>>>>>>>>>>>>>>>>& ...

  3. js 计算快速统计中用到的日期

    前言 最近在做统计报表模块,其中查询条件用到了快速查询,主要为了方便客户统计查询常用的几个日期纬度,比如本周.上周.本月.上月.昨日. 使用js计算,主要用到了js Date. getDate().g ...

  4. js计算两个日期的天数差值

    js计算两个日期的天数差值 通过两个日期计算这两个日期之间的天数差值 /** * 计算天数差的函数,通用 * @param sDate1 * @param sDate2 * @returns {Num ...

  5. js计算字符串的字节数和字符串与二进制的相互转化

    一.js计算字符串的字节数方法: //blob获取字符串的字节 var debug = "好的"; var blob = new Blob([debug],{type : 'tex ...

  6. JS计算前一天或后一天,前一月后一月

    JS计算前一天或后一天,前一月后一月,上一天下一下,上一月下一月. 方法一: function ktkGetNextMonth(currentDate, scaleStep) { //scaleSte ...

  7. Vue.js 计算属性是什么

    Vue.js 计算属性是什么 一.总结 一句话总结: 模板 表达式 维护 在模板中表达式非常便利,但是它们实际上只用于简单的操作.模板是为了描述视图的结构.在模板中放入太多的逻辑会让模板过重且难以维护 ...

  8. 【javascript基础】JS计算字符串所占字节数

    废话不说,直接正题吧. 最近项目有个需求要用js计算一串字符串写入到localStorage里所占的内存,众所周知的,js是使用Unicode编码的.而Unicode的实现有N种,其中用的最多的就是U ...

  9. JS计算两个日期之间的天数

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. Vue.js 计算属性(computed)

    Vue.js 计算属性(computed) 如果在模板中使用一些复杂的表达式,会让模板显得过于繁重,且后期难以维护.对此,vue.js 提供了计算属性(computed),你可以把这些复杂的表达式写到 ...

随机推荐

  1. kettle连接mysql报Communications link failure

    添加2个命名参数 1.autoReconnect=true 2.useSSL=false

  2. 一、Basic CSS 知识整理

    一.编写CSS的几种方式 <style> /* id选择器 */ #id_test { color: red; } /* 标签选择器 */ h2 { color: blue !import ...

  3. git练习网站(图形化版)

    https://learngitbranching.js.org/?locale=zh_CN

  4. Deepin20安装pip3和Pydev插件

    1. 安装jdk(见前面) 2. 安装eclipse(见前面) 3. Deepin20里已经有python3.7.3和python2.7.16,我们可以直接使用3.7.3,也是默认的python3.还 ...

  5. Rust for Rustaceans: Idomatic Programming for Experienced Developers Chap.2 Types

    翻译的内容如果有不理解的地方或者是其他的差错,欢迎后台回复讨论. 类型在内存中的表示 Rust中的每一个值都有自己的类型(Type).在这一章中,我们将会看到Rust中的类型服务于许多不同的目的,但其 ...

  6. 狂神说SpringBoot笔记之编写一个http接口

    编写一个http接口 1.1.在主程序的同级目录下,新建一个controller包,一定要在同级目录下,否则识别不到 2.代码 1 package com.example.app01.demo.api ...

  7. django+easyui

    django+easyui 快速构建网站 演示地址:http://demo.topjui.com/?from=360tg

  8. Java笔记第十弹

    网络编程三要素 1.IP地址--设备的标识 2.端口--应用程序的标识 3.协议--常见的协议有UDP协议和TCP协议 IP地址 1.IPv4(二进制数据) 2.IPv6 常用命令: ipconfig ...

  9. 关于报出这样的错误:org.apache.catalina.core.StandardWrapperValve.invoke 在路径为/tt1016_war_exploded的上下文中,Servlet[Servlet.m的解决方法

    从23:30开始报错检查,现在才弄好,发出来分享一下 错误界面: 首先,我们需要检查一下我们利用DBUtil.java文件中引用的db文件名称是否正确,(我就是因为没有注意到文件名称是否正确报出500 ...

  10. CF309E 题解

    11:30,过题.12:50,忘记做法. 吃饭时不该看未来日记的,Ynoj 害人不浅(确信). 以上为个人吐槽. 题目大意 不知道题目翻译是个啥...但讨论区有大佬给出了精确的翻译.我改得符合题目背景 ...