自定义时间格式转化,今天显示时分,昨天显示昨天,一周之内转化为星期,之前的时间显示年月日

本文介绍了如何在微信小程序和通用JS代码中实现类似京东消息页面的时间转换,能将当前时间展示为时分,昨天显示为特殊标记,一周内为星期,超过一周则为年月日格式。

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

模仿京东消息页面右侧的时间,将今天的时间转化为时分,昨天显示昨天,一周之内转化为星期,之前的时间显示年月日。

有微信小程序版本和js通用版本,仅供参考:

1.微信小程序版本:

// 1. 首先在wxs里面定义函数(注意只能写ES5版本代码)
function returnDiyDate(datetime) {
    var timeStamp = getDate().setHours(23, 59, 59, 0) / 1000; // 今天23:59:59秒数
    var eTime = 24 * 60 * 60;  //一天时间秒数
    var tTime = getDate(datetime).getTime() / 1000; // 传来的时间秒数
    // var yTime = timeStamp - eTime;  //昨天23:59:59时间秒数
    // var byTime = timeStamp - 2 * eTime;  //前天23:59:59时间秒数
    var currentTime = timeStamp - tTime
    var date = getDate(datetime);
    var year = date.getFullYear()
    var month = date.getMonth() + 1
    var day = date.getDate()
    var hour = date.getHours()
    var minute = date.getMinutes()    
    if (currentTime < eTime) {
        return [hour, minute].map(formatNumber).join(':') // 展示今天的时分
    } else if (currentTime >= eTime && currentTime < 2 * eTime) {
        return '昨天' // 展示昨天
    } else if (currentTime >= 2 * eTime && currentTime < 7 * eTime) {
       var nowWeek = getDate(datetime).getDay();
       var arr = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']
       var week_one = arr[nowWeek]
        return week_one // 展示星期
    } else {
        return [year, month, day].map(formatNumber).join('/'); // 展示年月日
    }
    function formatNumber(n) { // 补零的函数
      n = n.toString()
      return n[1] ? n : '0' + n
    }
  }

// 导出函数
module.exports = {
returnDiyDate:returnDiyDate
}

// 2. 页面上使用函数
// 在wxml文件的最下方引入wxs文件
<wxs module="filter" src="../../../wxs/filter.wxs"></wxs>

// 在标签内进行调用函数
filter.returnDiyDate('2022-11-09 10:10:10')

2. js通用版本(ES6和ES5都可以写,可自行改动)

<!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>
        Date.prototype.format = function (format) {
            var o = {
                "M+": this.getMonth() + 1,
                "d+": this.getDate(),
                "h+": this.getHours(),
                "m+": this.getMinutes(),
                "s+": this.getSeconds(),
                "q+": Math.floor((this.getMonth() + 3) / 3),
                "S": this.getMilliseconds()
            }
            if (/(y+)/.test(format)) {
                format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
            }
            for (var k in o) {
                if (new RegExp("(" + k + ")").test(format)) {
                    format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
                }
            }
            return format;
        };
        /* 
         *  pattern 格式字符串,例如:yyyy-MM-dd hh:mm:ss
         */
        function getFormatDateByLong(l, pattern) {
            return getFormatDate(new Date(l), pattern);
        };
        function getFormatDate(date, pattern) {
            if (date == undefined) {
                date = new Date();
            }
            if (pattern == undefined || pattern == "") {
                pattern = "yyyy-MM-dd hh:mm:ss";
            }
            return date.format(pattern);
        };

        //时间格式转换
        function returnDiyDate(date) {
            var timeStamp = new Date().setHours(23, 59, 59, 0) / 1000; // 今天23:59:59秒数
            console.log(timeStamp);
            var eTime = 24 * 60 * 60;  //一天时间秒数
            var tTime = new Date(date).getTime() / 1000; // 传来的时间秒数
            // var yTime = timeStamp - eTime;  //昨天23:59:59时间秒数
            console.log(yTime);
            // var byTime = timeStamp - 2 * eTime;  //前天23:59:59时间秒数
            var currentTime = timeStamp - tTime
            if (currentTime < eTime) {
               return getFormatDateByLong(new Date(date).getTime(), "hh:mm");  
            } else if (currentTime >= eTime && currentTime < 2 * eTime) {
                return '昨天'
            }else if(currentTime >= 2 * eTime && currentTime < 7 * eTime) {
                let nowWeek = new Date(date).getDay();
                let arr=['周日','周一','周二','周三','周四','周五','周六']
                let week_one=arr[nowWeek]
                return week_one
            }else {
                return getFormatDateByLong(new Date(date).getTime(), "yyyy/MM/dd");  
            }
        };

        var l = '2022-11-10 10:59:59'; // 定义时间
        console.log(returnDiyDate(l)); // 调用函数打印结果
    </script>
</body>

</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值