小程序使用WXS模块实现时间戳转格式化时间 不使用Date对象

该文章介绍了如何在微信小程序中使用WXS模板函数将毫秒时间戳转换为格式化的日期字符串。通过计算年份、月份、日期、小时、分钟和秒,考虑闰年的处理,最终得到如YYYY-MM-DDHH:MM:SS格式的日期。

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

微信小程序WXS模板函数,纯算法实现毫秒时间戳转格式化日期字符串

tool.wxs

var formatDate = function(timestamp) {

    var timezoneOffset = 8 * 60 * 60 * 1000; // 中国时区偏移量,单位为毫秒
    timestamp = timestamp + timezoneOffset;
    timestamp = timestamp / 1000
    var secPerDay = 24 * 60 * 60; // 每天的秒数
    var secPerHour = 60 * 60; // 每小时的秒数
    var secPerMin = 60; // 每分钟的秒数
  
    // 计算年份
    var year = Math.floor(timestamp / (secPerDay * 365)) + 1970;
  
    // 计算该年份是否为闰年
    var isLeapYear = (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
  
    // 计算该年份的天数
    var daysInYear = isLeapYear ? 366 : 365;
  
    // 计算该年份距离该时间戳所在年份的天数
    var daysInPrevYears = 0;
    for (var y = 1970; y < year; y++) {
      daysInPrevYears += (isLeapYear ? 366 : 365);
      isLeapYear = (y % 4 === 0 && y % 100 !== 0) || y % 400 === 0;
    }
    var daysInCurrentYear = Math.floor((timestamp - daysInPrevYears * secPerDay) / secPerDay);
  
    // 计算月份和日期
    var daysInMonth = [31, isLeapYear ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
    var month = 0;
    var day = daysInCurrentYear;
    for (var i = 0; i < daysInMonth.length; i++) {
      if (day < daysInMonth[i]) {
        month = i;
        break;
      }
      day -= daysInMonth[i];
    }
    month++;
  
    // 计算小时、分钟和秒数
    var hour = Math.floor((timestamp % secPerDay) / secPerHour);
    var minute = Math.floor((timestamp % secPerHour) / secPerMin);
    var second = Math.floor(timestamp % secPerMin);
  
    // 返回格式化后的字符串
    return year + "-" + (month < 10 ? "0" : "") + month + "-" + (day < 10 ? "0" : "") + day + " " + (hour < 10 ? "0" : "") + hour + ":" + (minute < 10 ? "0" : "") + minute + ":" + (second < 10 ? "0" : "") + second;
  
  
}

module.exports = {
  formatDate: formatDate
};

wxml

<wxs src="./tool.wxs" module="tool" />
{{tool.formatDate(item.createtime)}}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值