当前位置:首页 > uni-app

uniapp打卡日期

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

uniapp打卡日期实现方法

获取当前日期

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

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的本地存储功能保存打卡记录。可以以日期为键,打卡状态为值:

// 打卡
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'
  }]
}))

服务器同步

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

uniapp打卡日期

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 中集成极光推送,需要使用官方提供的插件或自行封装原生模块。以下是具体实现方式: 使用官方插件 在 uni-app 插件市场搜索「极光推送」插件,…

uniapp样式库

uniapp样式库

uniapp 常用样式库推荐 uView UI uView 是专为 uniapp 设计的多端兼容 UI 框架,提供丰富的组件和工具类。支持 Vue3 组合式 API,内置主题定制功能,常用于快速构建企…

uniapp发布到应用商店

uniapp发布到应用商店

发布到苹果App Store 确保开发者账号已注册并加入Apple Developer Program,年费99美元。在Xcode中生成iOS发布证书(.p12)和描述文件(Provisioning…

uniapp多环境配置

uniapp多环境配置

多环境配置的必要性 在UniApp开发中,多环境配置能有效区分开发、测试、生产等不同环境的API地址、密钥等参数,避免手动修改代码导致的错误。 创建环境配置文件 在项目根目录下创建env.js或co…

uniapp模板库

uniapp模板库

uniapp模板库推荐 官方模板库 uni-app官方提供多个模板,涵盖电商、社交、新闻等多个领域。这些模板可直接在HBuilderX中通过新建项目选择,包含基础结构和常用功能模块,适合快速启动项目。…

uniapp swiper禁止滑动

uniapp swiper禁止滑动

禁用 Swiper 滑动的方法 在 UniApp 中,可以通过设置 disableTouch 属性或动态绑定 touchable 属性来禁止 Swiper 组件的滑动行为。 方法一:通过 disab…