一年有52.17个星期.我如何在c#中计算当前星期

本文关键字:计算 一年 17个 | 更新日期: 2023-09-27 18:17:05

我将数据保存到具有指定字节倍数(dataSlots)的循环日志中,并且我根据从参考日期通过的天数计算周数。

 DateTime startDate = DateTime.UtcNow;
 for (int ii = 0; ii < 900; ii++)
 {
    currentDate = startDate + new TimeSpan(7 * ii, 1, 1, 1, 1)
    DateTime globalStartReference = new DateTime(2011, 12, 1, 0, 0, 0, DateTimeKind.Utc);
    var span = currentDate - globalStartReference ;
    int dataSlot = 0;
    dataSlot = (span.Days * 7) / 52;
    Console.WriteLine(dataSlot);
 }

我的希望是dataSlot将是一个不断增加的数字基于当前的一周,但它不是。在这几周,我得到了重复的条目(因此覆盖了我的数据)

11
28
44
60
77
88
109

为什么我得到重复的周,我如何解释这个?我的猜测是,一年中有小数周…

一年有52.17个星期.我如何在c#中计算当前星期

日历。GetWeekOfYear方法可能会有所帮助。它不允许任意的引用日期,但是您可以自己调整。

您是否试图获得任何给定年份的当前星期?它看起来像是从某个预定义的开始日期到无限。使用适当的日历和方法,您可以根据特定日期获得一年中的给定星期,但不能从任意日期获得x周。

还需要考虑闰年、部分周等

如果你只是担心从基线开始的几周,年份就不算了-它只是7天的增量。

否则有年份和星期;@BACON的答案可能是对的。你会得到一点重叠- Y2W1可能与Y1W52共享相同的日历周。不知道你是否要把它添加到第53周,但时间越长,问题就越大。