我有一个琐碎的问题,我无法构思解决方案。
我的工资单系统有以下规则:
已知的付费两周于2012年6月25日开始,于2012年7月8日结束。这一时期的发薪日是12/07/2012。所以我确实有一些起点。
从任何日期开始,我都可以计算出它的支付日期,因为我有一个已知的起点。我也可以很容易地计算它所涉及的财政年度。在SO上有很多解决这些问题的方法。
我现在需要允许我的用户输入日期并让应用程序显示与其相关的支付期。
我正在努力的是如何确定本财政年度的薪酬期(1至26/27)?有任何想法吗?
答案 0 :(得分:1)
现在您的用户输入了一个日期,您可以计算其付款日期,对吗?让“payDate”成为这个支付日期,你想要的是“财政年度的哪两周确实支付日期,从一个开始编号”,对吗?
然后,您首先需要确定财政年度的开始:
DateTime yearBegin;
if (payDate.Month >= 7)
yearBegin = new DateTime(payDate.Year, 7, 1);
else
yearBegin = new DateTime(payDate.Year - 1, 7, 1);
通过这个,您可以计算payDate和yearBegin之间的天数:
int delta = (payDate - yearBegin).Days;
最后你会得到答案:
int period = (delta / 14) + 1;
答案 1 :(得分:0)
我知道任何一年的第一个发薪日从不同的一天开始,总是匹配14天的整个时段。如果是这种情况,您可以尝试以下代码:
static DateTime InitialDate = new DateTime(2012, 06, 25);
private static int PayPeriod(DateTime inputDate)
{
int periodStartDay = (inputDate - InitialDate).Days % 14 + 1;
int periodStartMonth = 07;
int periodStartYear = inputDate.Month >= 7 ? inputDate.Year : inputDate.Year - 1;
DateTime periodStartDate = new DateTime(periodStartYear, periodStartMonth, periodStartDay);
int payPeriod = (inputDate - periodStartDate).Days / 14 + 1;
return payPeriod;
}