我怎样才能获得正确的付款期限?

2024-01-07

我觉得这更像是数学问题。我公司的员工遍布全国各地。公司的某些部门采用“奇数”工资周期,而另一些部门则采用“偶数”工资周期。我将给定支付期的开始日期称为“支付期”。我需要做两件事:

1)确定给定日期所属的发薪期

//Something like this:
public static DateTime getPayPeriodStartDate(DateTime givenDate, string EvenOrOdd)
{ .. }

2)获取两个日期之间的付款期列表:

//Something like this:
public static List<DateTime> getPayPeriodsBetween(DateTime start, DateTime end, string EvenOrOdd)
{ .. }

我使用几个日期作为固定标准,以此作为任何未来发薪期日期的基础。偶数和奇数的固定标准日期如下:

  • 偶数 - 01/04/09
  • 奇数 - 01/11/09

每个工资期从一周的星期日开始,持续两周。例如,使用上述标准日期,第一个偶发工资期从 01/04/09 开始,到 01/17/09 结束。第一个奇数工资期从 01/11/09 开始,到 01/24/09 结束。正如您所看到的,存在一些重叠。我们有数千名员工,因此有必要将他们稍微分散一下。

我有一个基于周数的解决方案,但它很笨重,并且必须每年“修复”。我想知道你会如何处理这件事。


尚未完全优化或测试,但这就是我想出的:

const int DaysInPeriod = 14;

static IEnumerable<DateTime> GetPayPeriodsInRange(DateTime start, DateTime end, bool isOdd)
{
    var epoch = isOdd ? new DateTime(2009, 11, 1) : new DateTime(2009, 4, 1);
    var periodsTilStart = Math.Floor(((start - epoch).TotalDays) / DaysInPeriod);

    var next = epoch.AddDays(periodsTilStart * DaysInPeriod);

    if (next < start) next = next.AddDays(DaysInPeriod);

    while (next <= end)
    {
        yield return next;
        next = next.AddDays(DaysInPeriod);
    }

    yield break;
}

static DateTime GetPayPeriodStartDate(DateTime givenDate, bool isOdd)
{
    var candidatePeriods = GetPayPeriodsInRange(givenDate.AddDays(-DaysInPeriod), givenDate.AddDays(DaysInPeriod), isOdd);
    var period = from p in candidatePeriods where (p <= givenDate) && (givenDate < p.AddDays(DaysInPeriod)) select p;
    return period.First();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我怎样才能获得正确的付款期限? 的相关文章

随机推荐

  • Google Calendar API:如何在没有 Google 密码的情况下创建/编辑/删除事件?

    我有一个应用程序 可以读取 编辑 删除 Google 日历中的事件 现在需要输入 Google 用户名和密码才能执行此操作 然而 这是一个问题 许多用户害怕泄露密码 问题 有没有办法访问 Google 日历中的活动without询问用户他
  • Komodo编辑自动完成JS对象文字

    问题是 Komodo 智能感知看不到这样定义的对象方法 var App window App method function 输入 应用程序 没有给出任何结果 但是 定义如下所示的对象效果很好 var App method function
  • “SystemInfo.deviceUniqueIdentifier”在 Android 构建中使用什么?

    The 文档 https docs unity3d com ScriptReference SystemInfo deviceUniqueIdentifier html记录 iOS Windows 版本中使用的标识符 但 Android 版
  • 使用 DownloadFileTaskAsync 一次下载所有文件

    给定一个包含 URL 的输入文本文件 我想一次性下载所有相应的文件 我用这个问题的答案使用 WebClient 和 TaskAsync 从异步 CTP 下载 UserState https stackoverflow com questio
  • 如何检查多个单元格的值是否相等?

    假设我有 6 个不同的单元格 并非全部排成一行 我想检查这些单元格中的值是否相等 我怎样才能用一个函数来做到这一点 我希望该函数只是显示 等于 或 不等于 或者可能更改单元格背景颜色 6 个单元的一种选择是 IF AND A1 B2 B2
  • 如何比较用 Java 和 Xamarin C# 编写的 Android 应用程序的性能?无论如何检查定量数据(代码和结果)[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我发现 Xamarin 声称他们在 Android 上的 Mono 实现及其 C 编译的应用程序比 J
  • 如何仅针对特定规则或一组规则运行 eslint - 仅命令行

    我知道你可以在 eslintrc文件 但如果我只想运行怎么办eslint并检查一项特定规则 E g eslint helpme js rule some important rule 我不知道这是否是最好的方法 但我能够让它工作 eslin
  • 如何修改这个缓动函数以减少弹跳?

    我正在尝试修改 Flash CS3 提供的fl motion easing bounce函数使生成的动画弹跳更少 我知道 减少弹跳 有点模糊 但我希望能帮助您理解该功能 Thanks param t Specifies the curren
  • Django 模板中的外键关系

    我知道这个问题已经被问过很多次了 但我仍然无法解决 model py class Awb models Model awb id models CharField primary key True max length 50 awb shi
  • Android 截取 Surface View 的屏幕截图显示黑屏

    我正在尝试通过代码截取我的游戏的屏幕截图并通过意图共享它 我可以做这些事情 但是屏幕截图总是显示为黑色 这是与共享屏幕截图相关的代码 View view MainActivity getView view setDrawingCacheEn
  • iPhone:ubercab 又名 (uber) 地图坐标

    谁能描述如何通过 MKMapView 在屏幕中心的位置获取其地图坐标 查看 Uber 应用程序 免费 它们有一个静态的图钉位于屏幕中间 您拖动地图但图钉仍保留在那里 屏幕中间是他们找到您的位置 非常非常快 向您显示您附近的地址 嘿嘿 我是
  • 临时反应组件中的样式组件

    我在反应中的临时包装器中使用样式组件时遇到两个问题 组件已渲染 但不使用背景颜色 ComponentWithAddedColors 不是有效的打字稿 不知道为什么 有谁可以帮忙解决这个问题吗 interface IProps id stri
  • Numpy 一次将数组与多个标量进行比较

    假设我有一个数组 a np array 1 2 3 我想将它与一些标量进行比较 这工作得很好 就像 a 2 False True False 有没有办法可以同时使用多个标量进行这样的比较 比较两个数组时的默认行为是进行元素比较 但我希望一个
  • Django如何访问抽象Base模型局部变量

    我将这个抽象基本模型定义如下 class ActivityAbstractBaseModel models Model POOR PR FAIR FA MEDIOCRE ME GOOD ENOUGH GE GOOD GO VERY GOOD
  • ODBC 不断提示输入密码

    我有一个在 Access 2003 中构建的应用程序 它使用系统 DSN ODBC 连接到 SQL Server ODBC 使用 SQL 身份验证 当应用程序启动时 系统会提示用户在数据库中进行身份验证 我在同一域中设置了另一台计算机 并安
  • 在 Hive 中获取系统日期 -1

    有什么办法可以得到current date 1在 Hive 中的意思是yesterdays date总是 并且以这种格式 20120805 我可以像这样运行查询来获取数据yesterday s date就像今天一样Aug 6th selec
  • 防止xss攻击的更好方法

    这两种方法中哪一种是更好的防止 xss 攻击的方法 保存在数据库中时的 HTMLEntities 显示 回显时的 HTMLEntities 我发现第一个更好 因为您可能会在显示时忘记添加它 两者中哪一个是更好的防止xss攻击的方法 保存在数
  • 将 Spark 数据加载到 Mongo / Memcached 中以供 Web 服务使用

    我对 Spark 非常陌生 并且有一个特定的工作流程相关问题 虽然它并不是真正与编码相关的问题 但它更像是与 Spark 功能相关的问题 我认为它在这里是合适的 如果您认为这个问题不适合 请随时将我重定向到正确的网站 所以这里是 1 我计划
  • 在没有管理员权限的情况下安装 MSBuild 15(Microsoft 构建工具)?

    有没有办法在没有管理员权限的情况下在我的计算机上本地安装 MSBuild 15 微软安装程序开启https www visualstudio com downloads https www visualstudio com download
  • 我怎样才能获得正确的付款期限?

    我觉得这更像是数学问题 我公司的员工遍布全国各地 公司的某些部门采用 奇数 工资周期 而另一些部门则采用 偶数 工资周期 我将给定支付期的开始日期称为 支付期 我需要做两件事 1 确定给定日期所属的发薪期 Something like th