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

微信小程序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


{{tool.formatDate(item.createtime)}}

你可能感兴趣的:(前端,小程序,微信小程序,算法,javascript)