正常时间转成时间戳,时间戳和当前时间比较

这篇博客介绍了一个JavaScript函数,用于将时间戳转换为易于理解的时间显示,如‘1分钟前’、‘昨天’或具体的日期。函数根据时间戳与当前时间的差距,动态显示相应的时间描述,覆盖了从1分钟内到多年前的多种情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

发布后的前120秒,都显示1分钟前;例如:1分钟前

120秒到1小时内,都显示n分钟前; 例如:2分钟前,3分钟前 … 58分钟前,59分钟前

1小时到24小时内,都显示n小时前;例如:小时前,2小时前 … 23小时前,24小时前

大于24小时又小于48小时的情况需要判断,这个时间段是否属于昨天的范畴还是前天的范畴; 属于昨天就显示“昨天”,属于前天就显示前天;例如:昨天,前天

大于48小时后直接统计显示当前日期,例如:1月1日,1月2日 … 2月27日,2月28日

超过当年显示n年n月n日,例如:2019年11月20日,2019年11月21日 … 2019年12月30日,2019年12月31日

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    /**
* 参数 diffValue  时间戳
* 发布后的前120秒,都显示1分钟前;例如:1分钟前



120秒到1小时内,都显示n分钟前; 例如:2分钟前,3分钟前 ......  58分钟前,59分钟前



1小时到24小时内,都显示n小时前;例如:小时前,2小时前 ......  23小时前,24小时前



大于24小时又小于48小时的情况需要判断,这个时间段是否属于昨天的范畴还是前天的范畴; 属于昨天就显示“昨天”,属于前天就显示前天;例如:昨天,前天



大于48小时后直接统计显示当前日期,例如:1月1日,1月2日 ...... 2月27日,2月28日



超过当年显示n年n月n日,例如:2019年11月20日,2019年11月21日 ...... 2019年12月30日,2019年12月31日 
*/
    // applyDate: "2021-03-03 10:24"
    // let dayTime = '2021-03-03 10:24' // 年
    // let dayTime = '2022-05-15 10:24' // 年
    let dayTime = '2022-05-16 20:47' // 年
    let timeVal = new Date(dayTime.replace(/-/g, "/")).getTime();
    //时间戳时间格式化(毫秒)
    function dates(timeStamp) {
      let second = 1000; 
      let minute = second * 60;
      let hour = minute * 60;
      let day = hour * 24;
      let month = day * 30;
      let now = new Date().getTime();
      let nowHouer = new Date().getHours() // 当前时间的小时值
      let diffValue = now - timeStamp;
      let monthC = diffValue / month; //月
      let weekC = diffValue / (7 * day); //周
      let dayC = diffValue / day; //天
      let hourC = diffValue / hour; //时
      let minC = diffValue / minute; //分
      let secC = diffValue / second; //秒
      if (monthC >= 12) {
        let data = new Date(parseInt(timeStamp));
        let year = data.getFullYear();
        let month = data.getMonth() + 1;
        let days = data.getDate() < 10 ? '0' + data.getDate() : '' + data.getDate();
        return `${year}年${month}月${days}日`
      }
      if(hourC > 48){
        let data = new Date(parseInt(timeStamp));
        let year = data.getFullYear();
        let month = data.getMonth() + 1;
        let days = data.getDate() < 10 ? '0' + data.getDate() : '' + data.getDate();
        return `${month}月${days}日` 
      }
      if(hourC > 24 && hourC <= 48){
        return (hourC - nowHouer) / 24 > 1 ? '前天' : '昨天'
      }
      if(hourC >= 1 && hourC <= 24){
        return `${parseInt(hourC)}小时前`
      }
      if(minC >= 2 && hourC < 1){
        return `${parseInt(minC)}分钟前`
      }
      if(minC < 2){
        return "1分钟前"
      }
    }


    console.log(dates(timeVal))
  </script>
</body>

</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值