c# - 如何在 C# 中将工作周 double 转换为日期时间

标签 c# datetime

我有一个工作周编号(从 1 到 52 的数字),我想将其转换为日期。

例如:

3.1 = 01/13/2014

22.4 = 05/29/2014

我的公司使用工作周,周一为 0.1,周二为 0.2,依此类推(周六和周日为 0.6 和 0.7)

有人知道有一个插件可以做到这一点吗?如果没有必要,我不想重新发明轮子。

更新:

这是我正在谈论的日历的视觉效果。每年的工作周都会有所不同,这可能会带来挑战。谢谢

enter image description here

最佳答案

暴力方法,可能可以做得更好

查找一年中第一天之前的星期一,即第一周。
现在,将转换后的周数乘以 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/

相关文章:

c# - 清除没有子元素的 xdt 元素

c# - Entity Framework 多对多关系更新

c# - 将指纹保存并提取到数据库

c# - 如何从另一个日期时间中减去一个日期时间?

python - 我应该如何在 Python 中打印特定时区的时间?

c# - 客户端通常在几十分钟后与服务器断开连接

c# - WPF - 从 StackPanel 中删除 "User Control"子级

太平洋/斐济的 Php 夏令时问题

bash - unix 字符串解析和日期格式化

android - 如何在android中制作管理面板