我有一个工作周号码(1到52之间的数字),我想将其转换为日期。
例如:
3.1 = 01/13/2014
22.4 = 05/29/2014
我公司使用工作周,周一为.1,周二为.2等(周六和周日为.6和.7)
有人知道这样做的插件吗?如果我不需要,我不想重新发明轮子。
更新
这是我正在谈论的日历的视觉效果。工作周每年都有所不同,这可能会带来挑战。感谢
答案 0 :(得分:4)
蛮力方法,可能会做得更好
查找一年中第一天之前的星期一,这是第1周 现在将转换周数乘以7 - 1(我们不要从零开始),添加天数减去1并将值传递给AddDays以查找所需的确切日期
void Main()
{
string k = "22.4";
Console.WriteLine(ConvertWeekDay(k, 2014).ToString());
k = "53.1";
Console.WriteLine(ConvertWeekDay(k, 2014).ToString());
k = "1.1";
Console.WriteLine(ConvertWeekDay(k, 2015).ToString());
}
public DateTime ConvertWeekDay(string weekday, int year)
{
int w; int d;
string[] wd = weekday.Split(new char[] {'.'});
w = int.Parse(wd[0]); d = int.Parse(wd[1]);
DateTime dt = new DateTime(year,1,1);
while(dt.DayOfWeek != DayOfWeek.Monday)
dt = dt.AddDays(-1);
dt = dt.AddDays(7 * (w - 1) + d - 1);
return dt;
}
请注意,如果您更改年份,53.1和1.1指的是同一天。