评论
优雅的本地js格式化小程序数组中的时间日期

优雅的本地js格式化小程序数组中的时间日期

前生有约,今生注定。不然,天涯的我,海角的你,怎会跨过千山万水,来延续这一场前世未了尘缘?红尘陌上,相见恨晚,心心相连,轻语绵绵。我感恩天意,让我们在岁月的长河里幸运相见,了却了这份前世的幽婉缠绵

优雅的本地js格式化小程序数组中的时间日期

星宿UI API过来的时间时期格式是 2024-06-11T20:25

灵沐API返回前台的时间格式是:2024-03-26T12:49:56.867Z

这玩意一个比一个长,横看竖看都不是我们理想类型。而对于时间格式化,正常是后端处理好再由接口返回;而不会后端的喔,只能从前端下手;优雅的本地js格式化小程序数组中的时间日期

方案

对于这类日期 我有想过一个最最最最简单的纯css方案,那就是限制容器的宽度超出后隐藏

color: #2F3644;
position: absolute;
right: 28rpx;
width
: 120rpx;
overflow: hidden;
white-space: nowrap;
优雅的本地js格式化小程序数组中的时间日期

之前是不敢去想js处理的,因为它是一个数组,要对每个对象过来的日期做处理,直到今天codezen大佬远程批斗(灵沐接口做案例)

先写一个格式化日期函数

/**
   * 格式化时间
   * @param {*} date 
   */
  formatDate(dateStr, format="") {
    const date = new Date(dateStr);
    if (!format) format = 'yyyy-MM-dd hh:mm:ss';
    let map = {
      "M+": date.getMonth() + 1, //月份
      "d+": date.getDate(),
      "h+": date.getHours(),
      "m+": date.getMinutes(),
      "s+": date.getSeconds(),
      "q+": Math.floor((date.getMonth() + 3) / 3), //季度
      "S": date.getMilliseconds() //毫秒
    };
    if (/(y+)/.test(format)) {
      format = format.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
    }
    for (var k in map) {
      if (new RegExp("(" + k + ")").test(format)) {
        format = format.replace(RegExp.$1, (RegExp.$1.length == 1) ? (map[k]) : (("00" + map[k]).substr(("" + map[k]).length)));
      }
    }
    return format;
  },

请求接口返回数据后调用格式化时间函数

  // 热门文章
  getHost() {
    API.getHost([hostData]).then((res) => {
      // 格式化时间格式
      let data = res.data.data;
      for(let key in data){
        data[key].attributes.updatedAt = this.formatDate(data[key].attributes.updatedAt,'yyyy-MM-dd') 
      }
      // console.log(data,'日期格式化');
      this.setData({
          host: data,
       })
    })
  },

控制台打印

优雅的本地js格式化小程序数组中的时间日期

总结

用脑洞大开的css,还是正规胎生的js格式化时间都可以!条条大路通罗马,本文经验值+9,头发-1最后的最后,感谢codezen提供优质的js方案