首先来看一下项目中的微信运动页面。

通过官方开发文档我们能够获取到微信运动步数,但是发现里边的时间戳并不是想要去在开发项目时使用的,需要将时间戳转换为年月日,然后再显示在前端页面,先来理清一下思路。

  • 用户授权获取微信运动数据
  • 将获取到的微信运动数据数组中的时间戳转换格式
  • 重新绑定数据渲染

接下来我们正式进入开发过程。

  • 用户授权获取微信运动数据
//定义函数,用于读取用户的微信运动数据getUserRun() {var that = thiswx.getSetting({success(res) {if (!res.authSetting['scope.address.werun']) {//申请用户授权wx.authorize({scope: 'scope.werun',success(res) {console.log('允许', res)//读取用户的微信运动数据that.getWeRunData()},fail(err) {console.log('不允许', err)//如果用户禁止授权,应该提示用户必须授权才能获取受信任的运动数据,并提示如何开启授权wx.showModal({title: '读取微信运动数据失败',content: '请在小程序右上角[设置]中开启授权'})}})} else {//读取用户的微信运动记录that.getWeRunData()}}})},
  • 然后我们来定义一个时间戳转换函数
//时间戳转换-函数封装formatDate: function (inputTime){var date = new Date(inputTime);var y = date.getFullYear();var m = date.getMonth() + 1;m = m < 10 ? ('0' + m) : m;var d = date.getDate();d = d < 10 ? ('0' + d) : d;return y + "年" + m + '月' + d + '号';},
  • 最后我们定义函数读取用户微信运动数据,并将时间戳转换格式(此处我使用云函数进行数据解密)。
//定义函数读取用户微信运动数据getWeRunData() {var that = thiswx.getWeRunData({success(res) {//由于数据是进行加密的所以我们通过云函数的方式进行解密wx.cloud.callFunction({name: 'deswerundata',data: {weRunData: wx.cloud.CloudID(res.cloudID)//这个cloudID值到云函数端会被替换}}).then(res => {console.log('微信运动数据请求成功', res.result.weRunData.data.stepInfoList)//将返回的数据赋值给data中的数组var timestamps = []//定义存储时间戳数组var steps= []//定义步数数组let stepInfoList = res.result.weRunData.data.stepInfoList//将请求回来的数组数据赋值stepInfoList.forEach(function(item,index){//forEach循环遍历二维数组timestamps.push(item.timestamp)//将遍历的每个数组中的时间戳追加到timestamps数组中steps.push(item.step)//将遍历的每个数组中的步数追加到steps数组中})that.setData({//将遍历数组赋值给data中的timestamp数组timestamp:timestamps})var time1 = []//再次定义一个空数组用来存放转换时间格式后的时间数组for(var i=0;i<that.data.timestamp.length;i++){//循环遍历var time = that.formatDate((that.data.timestamp[i])*1000)//传参给时间戳转换函数time1.push(time)//将遍历的每个时间戳转换格式后追加到time1数组中}console.log(time1)//打印转换后时间var wx_stepinfo = []//定义一个空的二维数组for(let i=0,len=time1.length;i<len;i++){//循环遍历let data1 ={//将遍历的数组中的每个数据赋值给data1step:steps[i],timestamp:time1[i]}wx_stepinfo.push(data1)//将data1中的数据追加到wx_stepinfo二维数组中}console.log(wx_stepinfo)//打印二维数组that.setData({//将转换格式后的二维数组重新赋值给data中的stepInfoListstepInfoList:wx_stepinfo})}).catch(res => {console.log('微信运动数据请求失败', res)})},})},

这时基本上我们就完成了微信运动时间戳格式的转换。下边是完整代码。

  • wxml
<view class="content"><image class="background" src="https://6368-chengquanyou-8gafoweg6b0bba01-1305079593.tcb.qcloud.la/background/QQ%E5%9B%BE%E7%89%8720210429222435.jpg"></image><scroll-view class="wxrun" scroll-y="true"><view class="wxrun_list" wx:for="{{stepInfoList}}"><view class="wxrun_list1">步数  <text>{{item.step}}</text>  步</view><view class="wxrun_list2">{{item.timestamp}}</view></view></scroll-view>
</view>
  • wxss
Page{height: 100%;
}
.content{width: 100%;height: 100%;
}
.background{width: 100%;height: 478rpx; /* z-index: -1;background-size:100% 100%; */
}
.wxrun{width: 100%;background-color: #ffffff;
}
.wxrun_list{width: 100%;height: 118rpx;border-bottom: 1rpx solid #DCDCDC;display: flex;flex-direction: row;align-items: center;
}
.wxrun_list1{font-size: 24rpx;margin-left: 80rpx;
}
.wxrun_list1 text{font-size: 36rpx;font-weight: 400;color: #FF8C00;
}
.wxrun_list2{font-size: 24rpx;flex: 1;text-align: right;margin-right: 50rpx;color: #B5B5B5;
}
  • js
Page({/*** 页面的初始数据*/data: {stepInfoList: [],//定义请求微信运动数据列表数组(带时间戳)timestamp:[],//定义转换时间格式空数组step:[],//定义步数数组},/*** 生命周期函数--监听页面加载*/onLoad: function (options) {this.getUserRun()},//定义函数,用于读取用户的微信运动数据getUserRun() {var that = thiswx.getSetting({success(res) {if (!res.authSetting['scope.address.werun']) {//申请用户授权wx.authorize({scope: 'scope.werun',success(res) {console.log('允许', res)//读取用户的微信运动数据that.getWeRunData()},fail(err) {console.log('不允许', err)//如果用户禁止授权,应该提示用户必须授权才能获取受信任的运动数据,并提示如何开启授权wx.showModal({title: '读取微信运动数据失败',content: '请在小程序右上角[设置]中开启授权'})}})} else {//读取用户的微信运动记录that.getWeRunData()}}})},//定义函数读取用户微信运动数据getWeRunData() {var that = thiswx.getWeRunData({success(res) {//由于数据是进行加密的所以我们通过云函数的方式进行解密wx.cloud.callFunction({name: 'deswerundata',data: {weRunData: wx.cloud.CloudID(res.cloudID)//这个cloudID值到云函数端会被替换}}).then(res => {console.log('微信运动数据请求成功', res.result.weRunData.data.stepInfoList)//将返回的数据赋值给data中的数组var timestamps = []//定义存储时间戳数组var steps= []//定义步数数组let stepInfoList = res.result.weRunData.data.stepInfoList//将请求回来的数组数据赋值stepInfoList.forEach(function(item,index){//forEach循环遍历二维数组timestamps.push(item.timestamp)//将遍历的每个数组中的时间戳追加到timestamps数组中steps.push(item.step)//将遍历的每个数组中的步数追加到steps数组中})that.setData({//将遍历数组赋值给data中的timestamp数组timestamp:timestamps})var time1 = []//再次定义一个空数组用来存放转换时间格式后的时间数组for(var i=0;i<that.data.timestamp.length;i++){//循环遍历var time = that.formatDate((that.data.timestamp[i])*1000)//传参给时间戳转换函数time1.push(time)//将遍历的每个时间戳转换格式后追加到time1数组中}console.log(time1)//打印转换后时间var wx_stepinfo = []//定义一个空的二维数组for(let i=0,len=time1.length;i<len;i++){//循环遍历let data1 ={//将遍历的数组中的每个数据赋值给data1step:steps[i],timestamp:time1[i]}wx_stepinfo.push(data1)//将data1中的数据追加到wx_stepinfo二维数组中}console.log(wx_stepinfo)//打印二维数组that.setData({//将转换格式后的二维数组重新赋值给data中的stepInfoListstepInfoList:wx_stepinfo})}).catch(res => {console.log('微信运动数据请求失败', res)})},})},//时间戳转换-函数封装formatDate: function (inputTime){var date = new Date(inputTime);var y = date.getFullYear();var m = date.getMonth() + 1;m = m < 10 ? ('0' + m) : m;var d = date.getDate();d = d < 10 ? ('0' + d) : d;return y + "年" + m + '月' + d + '号';},/*** 生命周期函数--监听页面初次渲染完成*/onReady: function () {},/*** 生命周期函数--监听页面显示*/onShow: function () {},/*** 生命周期函数--监听页面隐藏*/onHide: function () {},/*** 生命周期函数--监听页面卸载*/onUnload: function () {},/*** 页面相关事件处理函数--监听用户下拉动作*/onPullDownRefresh: function () {},/*** 页面上拉触底事件的处理函数*/onReachBottom: function () {},/*** 用户点击右上角分享*/onShareAppMessage: function () {}
})

小程序微信运动时间戳格式转换+列表渲染微信运动数据相关推荐

  1. 微信小程序之 js 时间戳/1000 转换 秒,六个小时后,一天后,本周五 选项计算时间

    1.js取当前时间的秒级时间戳 parseInt(new Date().getTime()/1000);, //或 Date.parse(new Date())/1000; 2.将当前日期转换为时间戳 ...

  2. 微信小程序详解(4.运算符和列表渲染)

    运算符 介绍 运算符的意义就不必我多讲了把,主要就是为了简便计算,优化代码,给代码增强了逻辑性,让我们的运算都方便. 通常来说,我们运算的方式都是依赖于这些运算符的作用,它们就像一个链接,把数据链接起 ...

  3. 视频教程-微信小程序商城15天从零实战课程-微信开发

    微信小程序商城15天从零实战课程 04年进入计算机行业.拥有6年net和php项目开发经验,8年java项目开发经验. 现前端全栈工程师,主攻产品设计,微信开发等. 黄菊华 ¥499.00 立即订阅 ...

  4. 关于微信小程序iOS端时间格式兼容问题

    关于微信小程序iOS端时间格式兼容问题 在自己开发中,当时间格式为 2020-06-29 08:00 ,需要将时间转为其他格式时,Android端转换成功,iOS端报错或是转为NaN. 解决方法: 1 ...

  5. 微信小程序:block制作动态商品列表

    微信小程序:block制作动态商品列表 在制作微信小程序时,我们往往会碰到需要动态生成列表的情况,本文便是以常见的商品列表为例来学习如何利用block制作动态商品列表. 运行截图 实现代码 js: P ...

  6. AI微信小程序源码下载照片AI转换动漫照片源码安装简单无需服务器域名

    这是一款转动漫脸的一款微信小程序源码 该款小程序源码无需服务器和域名 搭建安装简单 有多种风格转换模式可自选 安装教程: 首先解压源码然后把源码上传到微信开发者工具打开 另外设置一个合法域名 合法域名 ...

  7. 借助云开发,利用订阅消息,云函数路由实现小程序好友一对一聊天,添加好友等仿微信功能

    微信小程序借助云开发,利用订阅消息,云函数路由实现小程序好友一对一聊天,添加好友等仿微信功能 这篇文章已经进行了更新,请点此进行查看 仿微信好友聊天 主要功能有 后续可能补充功能 详细介绍 注意 保存 ...

  8. 微信小程序是什么?如何快速搭建一个微信小程序?

    目录 一.微信小程序是什么 二.安全管理 三.微信小程序的功能 四.快速开发一个微信小程序APP 1.集成即构实时音视频SDK 2.初始化SDK引擎 3.创建房间与登录房间 4.房主创建房间 5.推流 ...

  9. 《十四》微信小程序中的常用 API之登录、获取用户信息、支付、提现、跳转小程序、网络请求、弹框、导航、数据缓存、图片、查看文档、音频、拨打电话、剪贴板、滚动、WXML

    微信小程序提供了 wx 这个全局变量,通过这个全局变量可以调用微信小程序的 API. 登录: wx.login():获取登录凭证 code.通过登录凭证 code 进而换取用户登录态信息,包括用户在当 ...

最新文章

  1. filter2D函数
  2. ubuntu中mysql操作_uBuntu下安装MySql,及mySql操作!
  3. CentOS6下yum下载的包存放路径
  4. htmlcss笔记--标签默认值样式重置css reset(2)
  5. 自动化系列-pyppeteer键盘输入点击
  6. 求解:nhibernate2.0操作oralce提交事务时报错
  7. Android 系统优化(32)---探究android:largeHeap
  8. EasyUI之Form load函数IE8下设置Radio或Checkbox的BUG
  9. Python 面向对象 —— 多重继承
  10. JSP 的错误调试方法
  11. php ziparchive类,PHP Zip ZipArchive 类_编程学问网
  12. 3D打印笔 画出模型
  13. oracle18c升级19,Upgrading Oracle 18c To 19c
  14. 计算机组成原理无符号数除法,计算机组成原理课设 不恢复余数的无符号阵列除法器.doc...
  15. 2010 我的求职经历(2)
  16. Http协议的身份认证
  17. CCF考试——201312-5I’m stuck!
  18. 解决Could not build wheels for pikepdf which use PEP 517 and cannot be installed directly
  19. 计算机excel还原,3种方法找回电脑上已删除的Excel文档
  20. 医学自然语言处理(NLP)相关论文汇总之 COLING 2022

热门文章

  1. Leetcode_1482.制作m束花所需的最少天数
  2. 【JQuery】两种失焦事件的使用
  3. 【转载】上帝粒子证实存在宇宙末日来临?(图)
  4. Incapsula reese84 分析与破解
  5. Android仿微信通讯录
  6. 华为2288服务器不显示BIOS,设置BIOS - RH2288 V3 服务器 V100R003 用户指南 38 - 华为
  7. android5.1 取消录制屏幕跳出的权限对话框
  8. 如何一步一步成为一个领域专家
  9. 修改Visata下的无线网卡(Intel 5100 agn)Mac地址
  10. 使用网上成熟的【MySqlBackup】组件,通过WEB网页操作,备份远程计算机中的数据库到C:\inetpub\wwwroot文件夹下,系统汇报错误(访问被拒绝),该如何解决呢?