gpt4 book ai didi

php - 在 PHP 和 MySQL 中确定和存储打卡时间的最佳方法

转载 作者:太空宇宙 更新时间:2023-11-03 10:57:55 25 4
gpt4 key购买 nike

我正在使用 PHP 和 Laravel 4 构建时钟应用程序。

我的老板要求他能够根据我存储在数据库中的时间卡记录数据提取和构建不同的报告。

现在我在数据库中存储了一个 DateTime 用于签到和 checkout 以及这两个时间的时间戳。

我需要能够查询数据库并为用户的不同支付周期生成报告。

例如,我将在另一个数据库表中存储用于用户 ID 且具有不同支付周期的记录。所以开始日可能是每月的 1 日,结束日期是 15 日,这是 1 个支付期(大约 2 周)我不确定真正存储这些记录的最佳方式。

还有一个就是16号到月底。因此结束日期会根据一个月中有多少天而有所不同

我不确定为用户定义这些支付周期的最佳方式。我不能简单地说 1-15,然后是 16-30,因为每个月 30 都是不同的数字。

希望了解如何做到这一点?

所以我可以为任何Pay Periods 生成报告,因为不是每个用户每 2 周获得一次报酬,所以它需要灵活,以便我可以在每个用户的基础上定义它

这个问题更多的是关于逻辑而不是实际代码。

最佳答案

欢迎来到Time and Attendance的精彩世界| .你触及的是冰山一角。您可能会发现购买预包装的产品可能比自己编写更容易。

也就是说,我可以为您提供以下一般性建议:

  • 非常注意您的数据类型及其在 PHP 和 MySQL 中的使用方式。

  • 您需要确保了解本地时间与 UTC、时区和夏令时。通常,您不想存储本地时间,除非您还存储了它与 UTC 的偏移量。否则你会对夏令时的变化产生歧义。即使您只有一个时区要处理,这一点也很重要。

  • 谈到支付周期,常见的类型有:

    • 每周
    • 双周刊
    • 半月刊
    • 每月
    • 从 Y 开始每 X 天

  • 在某些系统中,每个单独的支付期都可以从正常日期调整 +/- 天数。这样做时,还必须调整边界期以进行补偿。

  • 您应该从可以在给定任何特定日期和时间的情况下计算支付期的开始和结束日期的业务逻辑开始。然后,您可以扩展它以轻松获得上一个或下一个付款周期。

  • 可以将每个支付周期存储到它自己的表中,但这不是必需的。这将取决于您系统内部的许多细节。

  • 因为支付期是由日期定义的,所以您有“今天是哪一天?”的问题。问题。这可能是公司定义的一天,或者如果员工在不同的时区,那么它可能是“逻辑日”。如果那时你只有一个时区要处理,那么你在这方面很幸运。

  • 与支付期进行比较时,使用半开区间,[start, end)。换句话说:

    periodStart <= punchTime < periodEnd

    或者同样

    periodStart <= punchTime && periodEnd > punchTime

    一个时期的结束应该与下一个时期的开始完全相同。不要试图将周期的结束定义为一些愚蠢的值,例如 23:59:59.999...

如您所见,这仅仅是个开始。我希望这对你有用。如果您可以进一步缩小问题的范围,我将很乐意提供更多帮助。否则,这就像在不确定以何种结构存储库存时询问如何构建 ERP 系统。

关于php - 在 PHP 和 MySQL 中确定和存储打卡时间的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18597810/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com