开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 137|回复: 8
收起左侧

[已解决] 怎么判断当天打卡情况 是否有漏打卡

 关闭 [复制链接]
结帖率:60% (6/10)
发表于 昨天 20:11 | 显示全部楼层 |阅读模式   江西省上饶市
50精币
2024-06-03 08:41:03
2024-06-03 11:10:10
2024-06-03 14:43:12
2024-06-03 17:11:10
2024-06-04 08:36:45
2024-06-04 14:29:50
2024-06-04 17:07:15
2024-06-05 08:40:17
2024-06-05 11:22:12
2024-06-05 14:23:58
2024-06-05 17:21:54
2024-06-06 08:07:10
2024-06-07 08:42:28
2024-06-07 11:20:45
2024-06-07 14:31:51

比如以上数据 上午上下班2个卡 下午上下班2个卡 怎么判断其中上班或下班的未打卡情况

最佳答案

查看完整内容

遍历是必须的, 拿到每个数据后根据它的年月日小时去判断是否打卡, 比如说要判断2024-6-5上午是否打卡上班和下班, 那就去遍历一遍, 如果取小时10 且

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:83% (25/30)

签到天数: 20 天

发表于 昨天 20:11 | 显示全部楼层   河南省周口市
遍历是必须的, 拿到每个数据后根据它的年月日小时去判断是否打卡, 比如说要判断2024-6-5上午是否打卡上班和下班, 那就去遍历一遍, 如果取小时<9, 那么上午上班了, 如果取小时>10 且 <12, 那就是下班了
  
子程序名返回值类型公开备 注
上下班情况 返回真代表正常上下班
参数名类 型参考可空数组备 注
整数型
整数型
整数型判断某日是否上正常下班
上午逻辑型如果为真则表示判断上午是否打卡, 为假表示下午是否打卡
日期列表文本型
是否上班逻辑型
是否下班逻辑型
变量名类 型静态数组备 注
i整数型 
日期日期时间型 
上班时间整数型 
下班时间整数型 
计次循环首 (取数组成员数 (日期列表), i)
日期 = 到时间 (日期列表 [i])
如果真 (取年份 (日期) = 年 取月份 (日期) = 月 取日 (日期) = 日)
如果 (上午)
上班时间 = 9  ' 九点之前
下班时间 = 12  ' 十二点之前
上班时间 = 15
下班时间 = 18
判断 (取小时 (日期) < 上班时间)
是否上班 = 真
判断 (取小时 (日期) > 上班时间 取小时 (日期) < 下班时间)
是否下班 = 真



如果真 (是否上班 是否下班)  ' 优化 可以不写
跳出循环 ()


计次循环尾 ()
子程序名返回值类型公开备 注
_启动子程序整数型 本子程序在程序启动后最先执行
变量名类 型静态数组备 注
日期文本型0
是否上班逻辑型 
是否下班逻辑型 
日期 = 分割文本 ( #日期, #换行符, )
上下班情况 (2024, 6, 4, 真, 日期, 是否上班, 是否下班)  ' 在日期数组中判断2024年6月4日上午是否上下班
调试输出 (是否上班, 是否下班)
返回 (0)  ' 可以根据您的需要返回任意数值



i支持库列表   支持库注释   
spec特殊功能支持库
回复

使用道具 举报

结帖率:95% (56/59)

签到天数: 22 天

发表于 昨天 20:17 | 显示全部楼层   海南省海口市
判断一下如果当天没有4条记录就说明肯定有未打卡 然后在判断时间
回复

使用道具 举报

结帖率:50% (4/8)

签到天数: 20 天

发表于 昨天 20:22 | 显示全部楼层   江西省南昌市
[Shell] 纯文本查看 复制代码
.版本 2
.支持库 spec

.程序集 窗口程序集_启动窗口
.程序集变量 打卡数据, 文本型, , "0"
.程序集变量 日期表, 文本型, , "0"
.程序集变量 时段定义, 打卡时段, , "4"  ' 定义四个时段

.数据类型 打卡时段
    .成员 时段名称, 文本型
    .成员 开始小时, 整数型
    .成员 结束小时, 整数型

.子程序 __启动窗口_创建完毕
    初始化时段定义 ()
    加载打卡数据 ()
    分析漏打卡情况 ()

.子程序 初始化时段定义
    ' 定义四个打卡时段范围
    时段定义 [1].时段名称 = "上午上班"
    时段定义 [1].开始小时 = 8
    时段定义 [1].结束小时 = 9

    时段定义 [2].时段名称 = "上午下班"
    时段定义 [2].开始小时 = 11
    时段定义 [2].结束小时 = 12

    时段定义 [3].时段名称 = "下午上班"
    时段定义 [3].开始小时 = 14
    时段定义 [3].结束小时 = 15

    时段定义 [4].时段名称 = "下午下班"
    时段定义 [4].开始小时 = 17
    时段定义 [4].结束小时 = 18

.子程序 加载打卡数据
    ' 原始数据(可从文件读取)
    打卡数据 = {
        "2024-06-03 08:41:03",
        "2024-06-03 11:10:10",
        "2024-06-03 14:43:12",
        "2024-06-03 17:11:10",
        "2024-06-04 08:36:45",
        "2024-06-04 14:29:50",
        "2024-06-04 17:07:15",
        "2024-06-05 08:40:17",
        "2024-06-05 11:22:12",
        "2024-06-05 14:23:58",
        "2024-06-05 17:21:54",
        "2024-06-06 08:07:10",
        "2024-06-07 08:42:28",
        "2024-06-07 11:20:45",
        "2024-06-07 14:31:51"
    }

.子程序 分析漏打卡情况
    .局部变量 当前日期, 文本型
    .局部变量 日期时段表, 文本型, , "0"
    .局部变量 i, 整数型
    .局部变量 j, 整数型
    .局部变量 时间戳, 文本型
    .局部变量 日期, 文本型
    .局部变量 小时, 整数型
    .局部变量 分钟, 整数型

    ' 按日期分组
    .计次循环首 (取数组成员数 (打卡数据), i)
        时间戳 = 打卡数据 
        日期 = 取文本左边 (时间戳, 10)
        小时 = 到整数 (取文本中间 (时间戳, 12, 2))
        分钟 = 到整数 (取文本中间 (时间戳, 15, 2))

        ' 记录日期
        .如果真 (查找文本数组 (日期表, 日期) = 0)
            加入成员 (日期表, 日期)
        .如果真结束

        ' 匹配时段
        .计次循环首 (4, j)
            .如果真 (小时 ≥ 时段定义 [j].开始小时 且 小时 ≤ 时段定义 [j].结束小时)
                加入成员 (日期时段表, 日期 + "|" + 时段定义 [j].时段名称)
                跳出循环 ()
            .如果真结束
        .计次循环尾 ()
    .计次循环尾 ()

    ' 检查每个日期的四个时段是否完整
    .计次循环首 (取数组成员数 (日期表), i)
        当前日期 = 日期表 
        .局部变量 缺失时段, 文本型
        缺失时段 = ""

        .计次循环首 (4, j)
            .如果真 (查找文本数组 (日期时段表, 当前日期 + "|" + 时段定义 [j].时段名称) = 0)
                缺失时段 = 缺失时段 + 时段定义 [j].时段名称 + " "
            .如果真结束
        .计次循环尾 ()

        .如果真 (缺失时段 ≠ "")
            调试输出 (当前日期, "漏打卡时段:" + 缺失时段)
        .如果真结束
    .计次循环尾 ()

.子程序 查找文本数组, 整数型
    .参数 数组, 文本型, 数组
    .参数 查找内容, 文本型
    .局部变量 i, 整数型

    .计次循环首 (取数组成员数 (数组), i)
        .如果真 (数组  = 查找内容)
            返回 (i)
        .如果真结束
    .计次循环尾 ()
    返回 (0)


思路:将原始打卡记录按日期分组,明确四个打卡时段的时间范围。然后写匹配规则:检查每条打卡记录属于哪个时段。最后写漏打卡检测:统计每个日期的未匹配时段。把实际打卡数据填入我发的代码中打卡数据数组里就OK,麻烦给个最佳,谢谢
回复

使用道具 举报

结帖率:100% (14/14)

签到天数: 22 天

发表于 昨天 20:40 | 显示全部楼层   江苏省南京市
先判断每天的考勤次数是不是4条,然后取打卡时间,上午8点和下午14点的都是上班卡,上午11点和下午17点是下班卡,如果某天考勤少了一条,取上下班打卡的小时,少的那个就是缺勤时间,思路就是这样的思路
回复

使用道具 举报

结帖率:100% (11/11)

签到天数: 22 天

发表于 昨天 20:48 | 显示全部楼层   福建省福州市
Snipaste_2025-02-21_20-47-26.png 刚好无聊敲了一下,判断了 早晚迟到、早晚早退、早晚缺卡,一会发到源码区
回复

使用道具 举报

结帖率:100% (11/11)

签到天数: 22 天

发表于 昨天 20:55 | 显示全部楼层   福建省福州市
观音 发表于 2025-2-21 20:48
刚好无聊敲了一下,判断了 早晚迟到、早晚早退、早晚缺卡,一会发到源码区
...

https://bbs.125.la/thread-14848830-1-1.html
回复

使用道具 举报

结帖率:14% (1/7)

签到天数: 4 天

发表于 昨天 20:56 | 显示全部楼层   湖南省怀化市
接单的一笔
回复

使用道具 举报

结帖率:100% (1/1)

签到天数: 3 天

发表于 昨天 22:19 | 显示全部楼层   江西省南昌市
你这个不是在易语言群里问了么?我好象看到有人发了打卡什么的,这个简单不用写的那繁琐,建议还是用中文吧,方便后期修改
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表