我有一个工作周编号(从 1 到 52 的数字),我想将其转换为日期。
例如:
3.1 = 01/13/2014
22.4 = 05/29/2014
我的公司使用工作周,周一为 0.1,周二为 0.2,依此类推(周六和周日为 0.6 和 0.7)
有人知道有一个插件可以做到这一点吗?如果没有必要,我不想重新发明轮子。
更新:
这是我正在谈论的日历的视觉效果。每年的工作周都会有所不同,这可能会带来挑战。谢谢
最佳答案
暴力方法,可能可以做得更好
查找一年中第一天之前的星期一,即第一周。
现在,将转换后的周数乘以 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 指的是同一天。
关于c# - 如何在 C# 中将工作周 double 转换为日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23899555/