当前位置:首页 > uni-app

uniapp打卡日期

2026-03-04 21:50:55uni-app

uniapp打卡日期实现方法

获取当前日期

使用JavaScript的Date对象获取当前日期,并格式化为需要的字符串形式。可以创建一个工具函数来处理日期格式化:

uniapp打卡日期

function formatDate(date) {
  const year = date.getFullYear()
  const month = date.getMonth() + 1
  const day = date.getDate()
  return `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}`
}

const today = formatDate(new Date())

存储打卡记录

使用uniapp的本地存储功能保存打卡记录。可以以日期为键,打卡状态为值:

uniapp打卡日期

// 打卡
uni.setStorageSync('punchRecords', {
  ...uni.getStorageSync('punchRecords'),
  [today]: true
})

// 检查是否已打卡
const hasPunched = uni.getStorageSync('punchRecords')[today]

日历组件显示

使用uniapp的<calendar>组件或第三方日历插件显示打卡记录。配置标记点来显示已打卡日期:

const markedDates = Object.keys(uni.getStorageSync('punchRecords')).map(date => ({
  date,
  dots: [{
    color: 'green'
  }]
}))

服务器同步

如果需要多设备同步,可以将打卡记录上传至服务器:

uni.request({
  url: 'https://your-api.com/punch',
  method: 'POST',
  data: {
    date: today,
    userId: '123'
  }
})

注意事项

  • 时区问题:确保服务器和客户端使用相同时区处理日期
  • 数据清理:定期清理过期的本地打卡记录
  • 用户提示:打卡成功后给予用户反馈提示

完整示例代码

<template>
  <view>
    <button @click="punchIn">打卡</button>
    <calendar :markedDates="markedDates"></calendar>
  </view>
</template>

<script>
export default {
  data() {
    return {
      markedDates: []
    }
  },
  methods: {
    punchIn() {
      const today = this.formatDate(new Date())
      const records = uni.getStorageSync('punchRecords') || {}

      if (!records[today]) {
        uni.setStorageSync('punchRecords', {...records, [today]: true})
        this.updateMarkedDates()
        uni.showToast({title: '打卡成功'})
      } else {
        uni.showToast({title: '今日已打卡', icon: 'none'})
      }
    },
    formatDate(date) {
      // 同上文formatDate函数
    },
    updateMarkedDates() {
      const records = uni.getStorageSync('punchRecords') || {}
      this.markedDates = Object.keys(records).map(date => ({
        date,
        dots: [{color: 'green'}]
      }))
    }
  },
  onLoad() {
    this.updateMarkedDates()
  }
}
</script>

标签: 日期uniapp
分享给朋友:

相关文章

uniapp消息推送

uniapp消息推送

uniapp消息推送实现方法 uniapp支持多种消息推送方式,包括uniPush、个推、极光推送等。以下为常见实现方案: uniPush(官方推荐) uniapp官方提供的推送服务,基于DClou…

uniapp开发电视应用

uniapp开发电视应用

开发环境准备 确保已安装HBuilderX最新版本,这是uniapp官方推荐的开发工具。安装Node.js环境,用于依赖管理和打包构建。准备Android Studio或Xcode用于调试和打包TV应…

uniapp中如何引用echarts

uniapp中如何引用echarts

在uniapp中引用echarts uniapp中引用echarts可以通过原生方式或第三方插件实现,以下是具体方法: 使用原生echarts 安装echarts依赖 在项目根目录下执行命令:…

uniapp 用法

uniapp 用法

uniapp 基本概念 uniapp 是一个基于 Vue.js 的跨平台开发框架,支持编译到 iOS、Android、H5 及小程序等多端。其核心特点是“一次开发,多端发布”,通过条件编译实现平台差异…

uniapp接入

uniapp接入

接入UniApp的基本流程 UniApp是一个基于Vue.js的跨平台开发框架,支持一次开发,多端发布。以下是接入UniApp的基本流程: 环境准备 确保已安装Node.js(建议版本12+)和HB…

uniapp 搜索

uniapp 搜索

uniapp 搜索功能实现方法 全局搜索组件集成 在pages.json中配置全局搜索栏,适用于所有页面顶部显示搜索框。示例代码: "globalStyle": { "navigationBa…