收藏
回答

在页面加载函数里面定义的new Date()传入wxs文件后为何显示Invalid Date ?

如题,今天学习wxs文件的使用,在写demo的时候出现了一个问题,在page页面的onLoad函数中定义了一个new Date(2020,11,10,14,40,50),并且使用this.setData函数更新数据,通过wxs文件接收后处理后返回给视图层,但是在控制台显示传入的数据是Invalid Date,并且后面的数据打印出来全部为NaN,想请各位大佬们给我找找问题出在哪,下面是代码和截图:

wxml

<wxs src = "wxs_demo.wxs" module="wxs"></wxs>
<view>{{time}}</view> // 传入进来的time会显示为Object
<view>{{wxs.timeFormat(time)}}</view>

js

Page({


  /**
   * 页面的初始数据
   */
  data: {
    
  },


  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options{
    var time = new Date(2020,10,10,14,40,50);
    this.setData({
      time : time
    })
  }
})

wxs

var timeFormat = function(time){
  var date = getDate(time);
    console.log(date);
  var date_second = date.getTime() / 1000;
  console.log("minute:"+ date_second);
  var now_date = getDate();
  var now_second = now_date.getTime() / 1000;
  var timestamp = now_second - date_second;
  var timeStr = "";
  if(timestamp < 60 ){
    timeStr = "刚刚";
  }else if(timestamp >= 60 && timestamp < 60*60 ){
    timeStr = parseInt(timestamp / 60) + "分钟前";
  }else if(timestamp >= 60 *60 && timestamp < 60*60*24){
    timeStr = parseInt(timestamp / 60 / 60) + "小时前";
  }else if(timestamp >= 60*60*24 && timestamp < 60*60*60*30){
    timeStr = parseInt(timestamp / 60 / 60 /24) + "天前";
  }else{
    var year = date.getFullYear();
    var momth = date.getMonth();
    var day = date.getDate();
    var hour = date.getHours();
    var minute = date.getMinutes();
    timeStr = year + "/" + momth + "/" + day +" " + hour + ":" + minute;
  }
  console.log("timeStr:"+timeStr)
  return timeStr;
}


module.exports = {
  timeFormat : timeFormat
}

截图:


回答关注问题邀请回答
收藏

1 个回答

  • 哄哄
    哄哄
    2020-11-11

    首先为什么出现Invalid Date 那是因为你传入的时间格式不正确

    var date = new Date("dream");
    console.log('date:', date);  //Invalid Date
    // 然后日期参数不对返回肯定返回NaN
    // 另外getDate我没看到你怎么写 
    // 目前怀疑你是 new Date() 传参错误导致的
    // 等待你后续补充getDate代码
    
    2020-11-11
    有用
    回复
登录 后发表内容
问题标签